比赛 noip普及组模拟赛 评测结果 AAAAAAAAAA
题目名称 AABC(无题面) 最终得分 100
用户昵称 胡嘉兴 运行时间 0.012 s
代码语言 C++ 内存使用 0.65 MiB
提交时间 2018-10-27 18:15:47
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define lowbit(x) (x&-x)
using namespace std;
const int N = 2e2+7;
vector<int> vec[N], val[N];
int dis[N][N], vis[N][N];
void spfa()
{
    queue<pair<int, int> > q;
    memset(dis, 0x3f, sizeof(dis));
    dis[1][1] = 0;
    vis[1][1] = 1;
    q.push(make_pair(1, 1));
    while(!q.empty())
    {
        int x = q.front().first, k = q.front().second;
        for(int i = 0; i < vec[x].size(); i++)
        {
            int y = vec[x][i];
            if(dis[y][k+1]>dis[x][k]+val[x][i])
            {
                if(!vis[y][k+1])
                {
                    vis[y][k+1] = 1;
                    q.push(make_pair(y, k+1));
                }
                dis[y][k+1] = dis[x][k]+val[x][i];
            }
        }
        q.pop();
        vis[x][k] = 0;
    }
    return;
}
int main()
{
    int n, m;
    double ans = 1e9;
    freopen("AABC.in", "r", stdin);
    freopen("AABC.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++)
    {
        int u, v, w;
        scanf("%d%d%d", &u, &v, &w);
        vec[u].push_back(v);
        val[u].push_back(w);
    }
    spfa();
    for(int i = 1; i <= n; i++)
    {
        ans = min(1.0*dis[n][i]/i, ans);
    }
    printf("%.3lf\n", ans);
    return 0;
}