• 题解 UVA10048 【Audiophobia】


    这是一道很神奇的题

    什么都不卡,就卡c++11(所以评测时要换成c++)。
    怎么说呐,其实就是跑一个弗洛依德,求图上两点间最大权值最小的路径,输出最大权值最小。
    P.S.本题n很小,直接floyd变形就行了qwq

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    
    #define N 105
    
    using namespace std;
    
    const int INF = 0x3f3f3f3f;
    
    int g[N][N], t = 1, que, n, m;
    
    void floyd() {
    	for (int k = 1; k <= n; k++)
    		for (int i = 1; i <= n; i++)
    			for (int j = 1; j <= n; j++) {
    				int maxx = g[i][k] < g[k][j] ? g[j][k] : g[i][k];
    				if (g[i][j] > maxx)
    					g[i][j] = maxx;
    			}
    }
    
    int main() {
    	while (scanf("%d%d%d", &n, &m, &que) && n || m || que) {
    		memset(g, INF, sizeof(g));
    		int a, b, c;
    		for (int i = 0; i < m; i++) {
    			scanf("%d%d%d", &a, &b, &c);
    			g[a][b] = g[b][a] = c;
    		}
    		floyd();
    		int sta, end;
    		if (t != 1)
    			printf("
    ");
    		printf("Case #%d
    ");
    		t++;
    		while (que--) {
    			scanf("%d%d", &sta, &end);
    			if (g[sta][end] < INF)
    				printf("%d
    ", g[sta][end]);
    			else
    				printf("no path
    ");
    		}
    	}
    	return 0;
    }
    

    不要问我为什么有这么多空格,其实我也不知道为什么!!!

    有些路你和某人一起走,就长得离谱,你和另外一些人走,就短得让人舍不得迈开脚步。
  • 相关阅读:
    Java并发编程 LockSupport源码分析
    [No000010F]Git8/9-使用GitHub
    [No000010E]Git7/9-标签管理
    [No000010D]Git6/9-分支管理
    [No000010C]Git5/9-远程仓库
    [No000010B]Git4/9-时光机穿梭
    [No000010A]Git3/9-创建版本库
    [No0000109]Git2/9-安装Git
    [No0000108]Git1/9-Git简介与入门
    [No000011D].NETCORE1/19-.NET Core 指南
  • 原文地址:https://www.cnblogs.com/Repulser/p/9579842.html
Copyright © 2020-2023  润新知