比赛 至少完成十道练习 评测结果 AAAAAAAAAA
题目名称 分糖果 最终得分 100
用户昵称 TARDIS 运行时间 1.158 s
代码语言 C++ 内存使用 1.11 MiB
提交时间 2017-05-22 20:33:10
显示代码纯文本
#include<bits/stdc++.h>
#define COGS
using namespace std;
const int maxn=100010;
int n,p,c,m,dis[maxn];
vector<int> G[maxn];
int temp1,temp2,ans=-1;
bool visit[maxn];
inline void addedge(int from,int to){
	G[from].push_back(to);
}
inline void in(){
	#ifdef COGS
	freopen("dividecandy.in","r",stdin);
	freopen("dividecandy.out","w",stdout);
	#endif
	scanf("%d%d%d%d",&n,&p,&c,&m);
	memset(dis,127/2,sizeof(dis));//printf("%d\n",dis[1]);
	for (int i=1;i<=p;i++){
		scanf("%d%d",&temp1,&temp2);
		addedge(temp1,temp2);
		addedge(temp2,temp1);
	}
}
inline void deal(){
	queue<int> que;
	que.push(c),visit[c]=1;
	dis[c]=1;
	while(!que.empty()){
		int u=que.front();que.pop();
		int num=G[u].size();
		for (int j=0;j<num;j++){
			int to=G[u][j];
			if (!visit[to]){
				dis[to]=min(dis[to],dis[u]+1);
				//printf("%d\n",dis[to]);
				visit[to]=1;que.push(to);
				ans=max(dis[to],ans);
			}
		}
	}
}
inline void pr(){
	printf("%d",ans+m);
}
int Main(){
	freopen("a.txt","r",stdin);
	in();
	deal();
	pr();
	return 0;
}
int main(){;}
int xlm=Main();