记录编号 283242 评测结果 AAAAAAAAAA
题目名称 找最佳通路 最终得分 100
用户昵称 Gravatar哒哒哒哒哒! 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-07-14 11:48:45 内存使用 0.33 MiB
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <queue>
using namespace std;

int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*f;
}
struct Node{
	int num,dis;
	Node(int a,int b){
		num=a,dis=b;
	}
};
queue<Node>q;
struct edge{
	int v,next;
	
}e[2510];
int tot,head[60];
void add(int u,int v){
	e[++tot].v=v;
	e[tot].next=head[u];
	head[u]=tot;
}
int vis[51];
int main(){
	freopen("city.in","r",stdin);freopen("city.out","w",stdout);
	int n=read(),m=read(),s=read(),t=read();
	for(int i=1;i<=m;i++){
		int a=read(),b=read();
		add(a,b);
	}
	q.push(Node(s,1));
	vis[s]=1;
	while(!q.empty()){
		Node a=q.front();q.pop();
		if(a.num==t){
			printf("%d\n",a.dis);
			return 0;
		}
		for(int i=head[a.num];i;i=e[i].next){
			int to=e[i].v;
			if(!vis[to]){
				vis[to]=1;
				q.push(Node(to,a.dis+1));
			}
		}
	}
	fclose(stdin);fclose(stdout);
	return 0;
}