比赛 |
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;
}