Fork Copy #include #include #include using namespace std; int a[101][101]; int vis[101]; int q[10001]; int f,r; int Max; int ans; void push(int aa){ q[++r] = aa; } void bfs(int u,int nodes){ memset(vis,-1,sizeof(vis)); vis[u] = 0; f = 0; r = -1; push(u); Max = 0; ans = u; while(f <= r){ int v = q[f]; f++; for(int i = 1; i <= nodes; i++){ if(a[v][i] == 1 && vis[i] == -1){ vis[i] = vis[v]+1; if(vis[i] > Max){ Max = vis[i]; ans = i; }else if(vis[i] == Max && i > ans){ ans = i; } push(i); } } } } void solve(){ int n, s; cin>>n>>s; int maxn = 0; memset(a,0,sizeof(a)); for(int i = 0; i < n/2; i++){ int t,t1; cin>>t>>t1; if(t>maxn) maxn = t; if(t1>maxn) maxn = t1; a[t][t1] = 1; } bfs(s,maxn); cout<