我的floyd哪里错了
  • 板块P1119 灾后重建
  • 楼主lyxleo
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/2 16:17
  • 上次更新2023/10/27 22:04:48
查看原帖
我的floyd哪里错了
255762
lyxleo楼主2022/7/2 16:17
#include <bits/stdc++.h>
using namespace std;
int n,m;
int t[205];
int g[205][205];
int Q;
int day;//准备但还没松弛的第几天数 
int main(){
	memset(g,0x3f3f3f3f,sizeof(g));
	scanf("%d %d",&n,&m);
	for(int i = 1;i <= n;++i){
		scanf("%d",&t[i]);
	}
	for(int i = 1;i <= m;++i){
		int u,v,w;
		scanf("%d %d %d",&u,&v,&w);
		g[u][v] = g[v][u] = w;
	}
	scanf("%d",&Q);
	while(Q--){
		int x,y,t;
		scanf("%d %d %d",&x,&y,&t);
		for(int k = day;k <= t;++k){
			for(int i = 1;i <= n;++i){
				for(int j = 1;j <= n;++j){
					g[i][j] = min(g[i][j],g[i][k] + g[k][j]);
				}
			}
		}
		day = t+1;
		if(g[x][y] == 1061109567){
			printf("-1\n");
		}
		else{
			printf("%d\n",g[x][y]);
		}
	}
	return 0;
}
2022/7/2 16:17
加载中...