比赛 至少完成十道练习 评测结果 AAAAAAAAAA
题目名称 分糖果 最终得分 100
用户昵称 Hyoi_deque 运行时间 1.316 s
代码语言 C++ 内存使用 2.22 MiB
提交时间 2017-05-23 18:57:30
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
const int MAXN=1e5+10;
int m,n,p,c;
queue<int> que_;
int vis[MAXN];
vector<int> G[MAXN];
int deep[MAXN];
int ans=0; 
int bfs(int u){
    que_.push(u);
     vis[u]=1;
		while(!que_.empty()){
			int a=que_.front();
			que_.pop();
			for(int i=0;i<=G[a].size()-1;i++)
			if(!vis[G[a][i]])
			{
				deep[G[a][i]]=deep[a]+1;
				vis[G[a][i]]=1;
				que_.push(G[a][i]); 
			} 
        }
}
	void init(){
	scanf("%d%d%d%d",&n,&p,&c,&m);
	for(int i=1;i<=p;i++) {
		int u,v;
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
	deep[c]=1;
}
	 
	void cmp(){
		for(int i=1;i<=n;i++) {
			ans=max(ans,deep[i]);
		}
		printf("%d",ans+m);
	}
	 
	int main() {
		freopen("dividecandy.in","r",stdin);
		freopen("dividecandy.out","w",stdout); 
		init();
		bfs(c);
		cmp();
		return 0;
	}