1 条题解

  • 0
    @ 2026-3-21 22:03:58

    C++ :

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    const int N = 100;
    const long long INF = 0x3f3f3f3f3f3f3f3f;
    
    long long n, s, x;
    long long g[N][N];
    
    void floyd()
    {
    	for (int k = 1; k <= n; k ++)
    		for (int i = 1; i <= n; i ++)
    			for (int j = 1; j <= n; j ++)
    				if(g[i][k] != INF && g[k][j] != INF)
    					g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
    }
    
    int main()
    {
    	cin >> n >> s;
    	
    	for (int i = 1; i <= n; i ++)
    		for (int j = 1; j <= n; j ++)
    			if(scanf("%lld", &x)) g[i][j] = x;
    			else g[i][j] = 0x3f3f3f3f3f3f3f3f;
    	
    	floyd();
    	
    	for (int i = 1; i <= n; i ++)
    		if(i != s) 
    			printf("(%lld -> %lld) = %lld\n", s, i, g[s][i]);	
    	
    	return 0;
    } 
    

    信息

    ID
    2246
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者