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