标签:void cti ref rmi esc where arc ems mis
Time Limit: 3000MS | Memory Limit: 30000K | |
Total Submissions: 35213 | Accepted: 9286 |
Description
Input
Output
Sample Input
1 3 3 1 2 3 1 3 4 2 3 5
Sample Output
Scenario #1: 4
Source
城市编号是1~N,有M条道路 每条道路有最大载重量
问从1运到N 最大载重量是多少
#include <ctype.h> #include <cstring> #include <cstdio> #define N 1505 int min(int a,int b) { return a>b?b:a; } int max(int a,int b) { return a>b?a:b; } void read(int &x) { x=0;bool f=0; char ch=getchar(); while (!isdigit(ch)) { if (ch==‘-‘) f=1; ch=getchar(); } while(isdigit(ch)) { x=x*10+ch-‘0‘; ch=getchar(); } x=f?(~x)+1:x; } bool vis[N]; int graph[N][N],dis[N],T,n,m; int main() { read(T); for(int k=1;k<=T;k++) { memset(graph,0,sizeof(graph)); memset(dis,1,sizeof(dis)); memset(vis,0,sizeof(vis)); read(n);read(m); for(int a,b,c,i=1;i<=m;i++) { read(a);read(b);read(c); graph[a][b]=graph[b][a]=c; } dis[1]=0;vis[1]=1; for(int i=2;i<=n;i++) dis[i]=graph[1][i]; for(int i=1;i<n;i++) { int maxd,dist=0; for(int i=1;i<=n;i++) { if(!vis[i]&&dis[i]>dist) { dist=dis[maxd=i]; } } vis[maxd]=1; for(int i=1;i<=n;i++) if(graph[maxd][i]) dis[i]=max(dis[i],min(dis[maxd],graph[maxd][i])); } if(k>1) puts(""); printf("Scenario #%d:\n%d\n",k,dis[n]); } return 0; }
标签:void cti ref rmi esc where arc ems mis
原文地址:http://www.cnblogs.com/ruojisun/p/6788916.html