求调20!
  • 板块P1346 电车
  • 楼主WeiYangLu
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/6 16:32
  • 上次更新2023/11/2 22:34:06
查看原帖
求调20!
567432
WeiYangLu楼主2023/9/6 16:32
#include<bits/stdc++.h>
using namespace std;
int n,a,b,curr,mn,g[101][101],dis[101];
bool vis[101];
int main(){
	for(int i=0;i<101;i++)
	    for(int j=0;j<101;j++)
	        g[i][j]=2147483647;
	for(int i=0;i<101;i++) g[i][i]=0;
	for(int i=0;i<101;i++) dis[i]=2147483647;
	cin>>n>>a>>b;
	for(int i=0,m;i<n;i++){
		cin>>m;
		for(int j=0,d;j<m;j++){
			cin>>d;
			if(!j)
			    g[i+1][d]=0;
			else g[i+1][d]=1;
		}
	}
	curr=a;
	vis[a]=1;
	dis[a]=0;
	while (!vis[b]){
		for(int i=1;i<=n;i++){
			if(dis[i]||g[curr][i]==2147483647)
			    continue;
			if(dis[i]>g[curr][i]+dis[curr])
			    dis[i]=g[curr][i]+dis[curr];
		}
		mn=2147483647;
		for(int i=1;i<=n;i++){
			if(vis[i]||dis[i]>=mn)
			    continue;
			curr=i;
			mn=dis[i];
		}
		if(mn==2147483647){
			cout<<-1;
			return 0;
		}
		vis[curr]=true;
	}
	cout<<dis[b];
} 
2023/9/6 16:32
加载中...