社区讨论
(玄关)锰锌刚学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 条回复,欢迎继续交流。
正在加载回复...