记录编号 283207 评测结果 AAAAAAAAAA
题目名称 找最佳通路 最终得分 100
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2016-07-14 11:11:58 内存使用 0.43 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
using namespace std;
bool judge[210];
int dis[210]={0};
int m[210][210];
int bx,by;
int dian,bian;
void Djs(int);
int main()
{
	freopen("city.in","r",stdin);
	freopen("city.out","w",stdout);
	int a,b;
	memset(judge,false,sizeof(judge));
	memset(dis,0x7f,sizeof(dis));
	memset(m,0x7f,sizeof(m));
	cin>>dian>>bian>>bx>>by;
	for(int i=1;i<=bian;i++)
	{
		cin>>a>>b;
		m[a][b]=1;
	}
	Djs(bx);
	cout<<dis[by]+1<<endl;
	return 0;
}
void Djs(int ch)
{
	int k,minn;
	dis[ch]=0;
	while(1)
	{
		minn=0x7f7f7f7f;
		k=0;
		for(int i=1;i<=dian;i++)
		{
			if(!judge[i]&&dis[i]<minn)
			{
				minn=dis[i];
				k=i;
			}
		}
		if(k==0)break;
		judge[k]=true;
		for(int i=1;i<=dian;i++)
		{
			if(!judge[i]&&m[k][i]<0x7f7f7f7f&&dis[k]+m[k][i]<dis[i])
			{
				dis[i]=dis[k]+m[k][i];
			}
		}
	}
}