int main() { int test; cin >> test; int a = 1; while(test--) { cin >> r >> c >> m >> n >> w; g.assign(r, vector<int>(c,0)); visited.assign(r, vector<int>(c,0)); for(int i = 0; i < w; i++) { int x, y; cin >> x >> y; g[x][y] = -1; } for(int i = 0; i < r; i++) { for(int j = 0; j < c; j++) { if(g[i][j] != -1) g[i][j] = connectedFields(i,j).size(); } } even = 0; odd = 0; bfs(); cout << "Case " << a << ": " << even << " " << odd << endl; a++; } }
int main() { int N; cin >> N; col.resize(N); g.assign(N,vector<int>()); for(int i = 0; i < N; ++i) cin >> col[i]; for(int i = 0; i < N-1; ++i) { int u,v; cin >> u >> v; u--; v--; g[u].push_back(v); g[v].push_back(u); } dfs(-1,0,0); dfs(-1,max_v,1); cout << max_dist/2 << endl; return 0; }
int main() { //freopen("testL.txt","r",stdin); ios_base::sync_with_stdio(false); int t; cin>>t; while(t--) { DP.clear(); int k; cin>>k; int n; cin>>n; G.assign(n,list<road>()); int r; cin>>r; while(r--) { int a,b,l,t; cin>>a>>b>>l>>t; a--; b--; G[a].push_back(road(b,l,t)); } int ans=solve(0,k); if(ans>=INVALID) cout<<-1<<endl; else cout<<ans<<endl; } }
int main() { while(cin >> N >> M) { if(N == 0 && M == 0) break; euler.clear(); g.assign(N,vector<int>()); in.assign(N,0); out.assign(N,0); for(int i = 0; i < M; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); out[u]++; in[v]++; } int cnt = 0; vector<int> start(2,-1); for(int i = 0; i < N; ++i) { if(in[i] != out[i]) { if(cnt < 2) start[cnt] = i; cnt++; } } if(cnt == 0) { int s = 0; for(; s < N; ++s) { if(g[s].size() > 0) break; } eulerTour(s); } else if(cnt == 1) { int u = start[0]; if(out[u] == in[u]+1) eulerTour(u); else { cout << "Impossible" << endl; continue; } } else if(cnt == 2) { int u = start[0], v = start[1]; if(out[u] == in[u]+1 && in[v] == out[v] +1) { int s = u; eulerTour(s); } else if(out[v] == in[v]+1 && in[u] == out[u] +1) { int s = v; eulerTour(s); } else { cout << "Impossible" << endl; continue; } } else { cout << "Impossible" << endl; continue; } reverse(euler.begin(),euler.end()); if(euler.size() != M+1) { cout << "Impossible" << endl; continue; } for(int i = 0; i < euler.size(); ++i) cout << euler[i] << (i == euler.size()-1 ? "\n" : " "); } return 0; }