(玄关)锰锌刚学Floyd 0x3fffffff秒,P1119 90pts求条
  • 板块灌水区
  • 楼主Berd__
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/2 20:13
  • 上次更新2024/12/2 22:19:35
查看原帖
(玄关)锰锌刚学Floyd 0x3fffffff秒,P1119 90pts求条
959419
Berd__楼主2024/12/2 20:13

™四万两千多行出的错

#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;
	}
}
2024/12/2 20:13
加载中...