出题人很喜欢114514
查看原帖
出题人很喜欢114514
826079
Autumn_Rain楼主2024/1/18 08:48

这是一份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(喜

2024/1/18 08:48
加载中...