WA第15,玄关求调
查看原帖
WA第15,玄关求调
1284088
meifan666楼主2024/12/9 21:48
#include<bits/stdc++.h>//优化:1和n间肯定有公路或铁路
using namespace std;
#define int long long
int n,m,a[5000],b[5000];
int dis1[410][410];
int dis2[410][410];
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j)dis1[i][j]=0,dis2[i][j]=0;
			else dis1[i][j]=INT_MAX,dis2[i][j]=INT_MAX;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>a[i]>>b[i];
		dis1[a[i]][b[i]]=dis1[b[i]][a[i]]=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(dis1[i][j]==INT_MAX)dis2[i][j]=1;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				dis1[j][k]=min(dis1[j][i]+dis1[i][k],dis1[j][k]);
				dis2[j][k]=min(dis2[j][i]+dis2[i][k],dis2[j][k]);
			}
		}
	}
	if(dis1[1][n]==INT_MAX||dis2[1][n]==INT_MAX){
		cout<<-1;
	}else{
		cout<<max(dis1[1][n],dis2[1][n]);
	}
	return 0;
}
2024/12/9 21:48
加载中...