社区讨论

(玄关)锰锌刚学Floyd 0x3fffffff秒,P1119 90pts求条

灌水区参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m46ztpzb
此快照首次捕获于
2024/12/02 20:15
去年
此快照最后确认于
2025/11/04 13:26
4 个月前
查看原帖
™四万两千多行出的错
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,q;
int t[205];
int adj[205][205];
int dis[205][205];
bool rep[205];
signed main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>t[i];
	int x,y,ti;
	for(int i=0;i<m;i++){
		cin>>x>>y>>ti;
		adj[x][y]=ti;
		adj[y][x]=ti;
	}
	cin>>q;
	int k=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(i==j) dis[i][j]=0;
			else if(adj[i][j]!=0) dis[i][j]=adj[i][j];
			else dis[i][j]=0x3fffffff;
		}
	}
	while(q--){
		cin>>x>>y>>ti;
		for(int i=0;i<n;i++){
			if(t[i]<=ti) rep[i]=1;
		}
		if(!rep[x]||!rep[y]){
			cout<<"-1\n";
			continue;
		}
		for(;k<n&&rep[k];k++){
			for(int i=0;i<n;i++){
				for(int j=0;j<n;j++){
					dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
				}
			}
		}
		if(dis[x][y]>1e9) cout<<"-1\n";
		else cout<<dis[x][y]<<endl;
	}
}

回复

1 条回复,欢迎继续交流。

正在加载回复...