1 条题解

  • 0
    @ 2023-1-12 10:26:56

    很显然是一个单源有向图最短路问题。鉴于 NN 的规模只有 100100,且输入数据给出的是邻接矩阵,故考虑 Floyd。求出最短路后要注意输出的格式。时间复杂度 O(N3)O(N^3)

    #include <cstdio>
    #include <algorithm>
    #include <utility>
    #define INF 0x3f3f3f3f
    using namespace std;
    int f[105][105];
    pair<int, int> p[105];
    int main() {
    	int n, m;
    	scanf("%d%d", &n, &m);
    	for (int i = 1; i <= n; i++)
    		for (int j = 1; j <= n; j++) {
    			scanf("%d", &f[i][j]);
    			if (!f[i][j] && i != j)
    				f[i][j] = INF;
    		}
    	for (int k = 1; k <= n; k++)
    		for (int i = 1; i <= n; i++)
    			for (int j = 1; j <= n; j++)
    				f[i][j] = min(f[i][j], f[i][k] + f[k][j]);
    	for (int i = 1; i <= n; i++)
    		p[i] = make_pair(f[m][i], i);
    	sort(p + 1, p + n + 1);
    	int lst = 0;
    	printf("%d", m);
    	for (int i = 2; i <= n; i++) {
    		if (p[i].first == INF)
    			break;
    		if (lst < p[i].first) {
    			while (lst < p[i].first)
    				lst++, puts("");
    			printf("%d", p[i].second);
    		} else
    			printf(" %d", p[i].second);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    15
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者