|
|
вернуться в форумAccepted code. Послано Jumbo 31 дек 2011 01:36 #include <cstdio> #include <vector> #include <algorithm> using namespace std; vector < vector < int > > g; vector < bool > d; void dfs(int v, int p = -1) { if ((int)g[v].size()==1) d[v]=false; d[v] = false; for (int i = (int)g[v].size()-1; i >= 0; i--) { int to = g[v][i]; if (to == p) continue; dfs(to,v); if (!d[to]) d[v] = true; } } int main() { int n,root; scanf("%d%d",&n,&root); g.resize(n+1); d.resize(n+1); for (int i=1;i<=n-1;i++) { int u,v; scanf("%d%d",&u,&v); g[u].push_back(v); g[v].push_back(u); } for (int i=1;i<=n;i++) sort(g[i].begin(),g[i].end());
dfs(root); if (d[root]) { for (int i = 0; i<(int)g[root].size(); i++) if (!d[g[root][i]]) { printf("First player wins flying to airport %d",g[root][i]); return 0;} } puts("First player loses"); return 0; } |
|
|