本文共 1113 字,大约阅读时间需要 3 分钟。
题意:从a点到b点, 找到一条路径,使得这条路径上的所有噪音中最大的值是所有路径中最小的, 这个噪音值便是要求的。
分析:直接用Flody求解,把其中的“之和”与“取最小值”换成“求最大值”和“最小值”
代码:
#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long#define mod 1000000007#define mem(a) memset(a,0,sizeof(a))using namespace std;const int maxn = 100 + 5 , inf = 0x3f3f3f3f ;int G[maxn][maxn];main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout); int n,m,cmd,a,b,c,k = 1; while(!~scanf("%d %d %d",&n,&m,&cmd),(n||m||cmd)){ memset(G,inf,sizeof(G)); for(int i = 0 ; i < m ; i ++ ){ scanf("%d %d %d",&a,&b,&c); G[a][b] = G[b][a] = c; } for(int k = 1 ; k <= n ; k ++ ) for(int i = 1 ; i <= n ; i ++ ) for(int j = 1 ; j <= n ; j ++ ) G[i][j] = min(G[i][j],max(G[i][k],G[k][j])); if(k>1) printf("\n"); printf("Case #%d\n",k++); for(int i = 1 ; i <= cmd ; i ++ ){ scanf("%d %d",&a,&b); G[a][b] == inf ? printf("no path\n") : printf("%d\n",G[a][b]); } } return 0;}
转载于:https://www.cnblogs.com/seven7777777/p/10278723.html