比赛 |
noip普及组模拟赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
AABC(无题面) |
最终得分 |
100 |
用户昵称 |
梦那边的美好ET |
运行时间 |
0.012 s |
代码语言 |
C++ |
内存使用 |
0.49 MiB |
提交时间 |
2018-10-27 21:18:31 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>b[210],c[210];
int f[210][210],n,a1,a2,a3,m,r[210];
bool bk[210];
double ans=999999999.0;
inline void dfs(int p){bk[p]=1;
if(b[p].size())for(int i=0;i<b[p].size();i++){
r[b[p][i]]--;
for(int j=1;j<=n-1;j++)f[b[p][i]][j+1]=min(f[b[p][i]][j+1],f[p][j]+c[p][i]);
if(r[b[p][i]]==0&&!bk[b[p][i]])dfs(b[p][i]);
}
return;
}
int main(){
freopen("AABC.in","r",stdin);
freopen("AABC.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
f[i][j]=99999999;
f[1][1]=0;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a1,&a2,&a3);r[a2]++;
b[a1].push_back(a2);
c[a1].push_back(a3);
}
for(int i=1;i<=n;i++)if(!bk[i]&&r[i]==0)dfs(i);
for(int i=1;i<=n;i++)ans=min(ans,f[n][i]*1.0/i);
printf("%.4f",ans);
return 0;
}