poj 1655 树的重心
2014-11-20 05:10
239 查看
2014/11/20
学点自己不知道的东西。
学点自己不知道的东西。
#include<stdio.h> #include<string.h> #include<vector> using namespace std; vector<int > mp[20005]; int num[20005],vis[20005],dp[20005]; int n, point ,minn; void init() { for(int i =0 ;i < 20005; i++) mp[i].clear(); } int Max(int a,int b ) { return a>b?a:b; } int dfs(int x) { vis[x] = 1; num[x] = 1; for(int i = 0;i < mp[x].size(); i++) { if(!vis[mp[x][i]]) { num[x]+=dfs(mp[x][i]); } dp[x] = Max(dp[x],num[mp[x][i]]); } dp[x] = Max(dp[x],n - num[x]); if(dp[x] < minn) { minn = dp[x]; point = x; } return num[x]; } int main() { int tot ,a ,b; while(~scanf("%d",&tot)) { while(tot--) { minn = 200000; scanf("%d",&n); init(); for(int i =0 ;i < n-1; i++) { scanf("%d%d",&a,&b); mp[a].push_back(b); mp[b].push_back(a); } memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis)); dfs(1); printf("%d %d\n",point,minn); } } return 0; }
相关文章推荐
- POJ 题目1655 Balancing Act(树的重心)
- poj 1655 Balancing Act 【树的重心】
- POJ 1655 Balancing Act 树的重心
- POJ 1655 树的重心
- poj 1655树的重心入门
- Poj 1655 Balancing Act (树的重心)
- POJ 1655 Balancing Act&&POJ 3107 Godfather(树的重心)
- poj 1655 树形dp求取树的重心
- poj 1655 Balancing Act 树的重心
- POJ 1655 Balancing Act (树的重心)
- POJ 1655 - DP 树的重心,经典 #P
- POJ 1655 Balancing Act (树的重心)
- POJ 1655 Balancing Act(树的重心)
- POJ 1655 Balancing Act (树的重心)
- POJ 1655 树的重心 解题报告
- poj 1655 求树的重心
- poj1655树的重心
- POJ 1655 树的重心(树形 DP)
- 【POJ】1655 Balancing Act 树的重心
- 树的重心 poj - 1655 和 poj - 3107