记录编号 |
283207 |
评测结果 |
AAAAAAAAAA |
题目名称 |
找最佳通路 |
最终得分 |
100 |
用户昵称 |
安呐一条小咸鱼。 |
是否通过 |
通过 |
代码语言 |
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];
}
}
}
}