CSU-1908 The Big Escape
CSU-1908 The Big EscapeDescriptionThere is a tree-like prison. Expect the root node,each node has a prisoner,and the root node is the only exit. Each node can accommodate a large number of prisoners,but each edge per minute only one prisoner can pass. InputThere are lots of case. OutputFor each test case,you output one line “Case #%d:%d” Sample Input10 2 1 2 2 3 2 4 2 5 1 6 5 7 3 8 2 9 2 10 Sample OutputCase #1:2 题解题意是给定一个树形监狱,每条边每分钟只能允许一个人通过,给定根节点,犯人逃到根节点就算逃出,每个节点可以存在多个犯人,问逃出的最短时间 这个题就是统计根节点最大子树有多少节点 #include<bits/stdc++.h> #define maxn 100050 using namespace std; vector<int> G[maxn]; int sum; void dfs(int u,int fa) { for (int i = 0; i < G[u].size(); i++) { int v = G[u][i]; if (v == fa) continue; sum++; dfs(v,u); } } int main() { int n,m; int cnt = 0; while (scanf("%d%d",&n,&m) != EOF) { cnt++; for (int i = 1; i <= 100000; i++) { G[i].clear(); } for (int i = 1; i < n; i++) { int a,b; scanf("%d%d",&a,&b); G[a].push_back(b); G[b].push_back(a); } int ans = 0; for (int i = 0; i < G[m].size(); i++) { int v = G[m][i]; sum = 0; dfs(v,m); ans = max(ans,sum); } printf("Case #%d:%dn",cnt,ans + 1); } } /********************************************************************** Problem: 1908 User: Artoriax Language: C++ Result: AC Time:748 ms Memory:8064 kb **********************************************************************/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |