这是一份44分的代码
#include<bits/stdc++.h>
using namespace std;
int n,m,t,g[310][310];
int main(){
cin>>n>>m>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=114514;
if(i==j)g[i][j]=0;
}
}
while(m--){
int u,v,w;
cin>>u>>v>>w;
g[u][v]=w;
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=min(g[i][j],max(g[i][k],g[k][j]));
}
}
}
while(t--){
int a,b;cin>>a>>b;
if(g[a][b]==114514)cout<<-1<<endl;
else cout<<g[a][b]<<endl;
}
return 0;
}
考虑是初始值的问题,于是改成了:
#include<bits/stdc++.h>
using namespace std;
int n,m,t,g[310][310];
int main(){
cin>>n>>m>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=11451419;
if(i==j)g[i][j]=0;
}
}
while(m--){
int u,v,w;
cin>>u>>v>>w;
g[u][v]=w;
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=min(g[i][j],max(g[i][k],g[k][j]));
}
}
}
while(t--){
int a,b;cin>>a>>b;
if(g[a][b]==11451419)cout<<-1<<endl;
else cout<<g[a][b]<<endl;
}
return 0;
}
AC了!,证明题目数据输出了多个114514(喜