40pts求调(
查看原帖
40pts求调(
921417
crean_楼主2024/3/31 18:02

很奇怪 在本地和洛谷在线测试#1都没问题但是提交就错

#include<bits/stdc++.h>
#define mian main
using namespace std;
int vis[505][505];
int ma[505][505];
int route[505][505];
int l[105];
int n,m;
void ini(){
	for(int i=0;i<=m;i++){
		for(int j=0;j<=m;j++){
			if(i!=j) ma[i][j]=1e9+7;
		}
	}
}
int mian(){
	scanf("%d%d",&n,&m);
	ini();
	for(int i=0;i<=n+1;i++){
		string a;
		getline(cin,a);
		for(int j=0,k=0;j<a.size();j++){
			int tmp=0;
			if(a[j]>='0'&&a[j]<='9'){
				while(j<a.size()&&a[j]>='0'&&a[j]<='9'){
					tmp*=10;
					tmp+=a[j++]-'0';
				} 
			}
			if(j==a.size()||a[j]==' '){
				route[i][k++]=tmp;
				l[i]++;	
			} 
		}
	}
	for(int i=0;i<=n+1;i++){
		for(int j=0;j<=l[i];j++){
			for(int k=j;k<=l[i];k++){
				vis[route[i][j]][route[i][k]]=i;
				ma[route[i][j]][route[i][k]]=0;
			}
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=m;k++){
				int t=1;
				if(vis[j][i]==vis[i][k]&&vis[j][i]!=0) t=0;
				if(ma[j][k]>ma[j][i]+ma[i][k]+t){
					ma[j][k]=(ma[j][i]+ma[i][k]+t);
				}
			}
		}
	}
	if(ma[1][m]==1e9+7) printf("NO");
	else printf("%d",ma[1][m]);
	return 0;
}
2024/3/31 18:02
加载中...