codeforces 120F Spiders 树形DP
2012-12-25 13:52
459 查看
做法:求数中距离最长的两点,基本树形DP‘
#include <cstdio> #include <cstring> #include <utility> #include <vector> #include <algorithm> #include <iostream> #define LMT 102 using namespace std; bool gra[LMT][LMT]; int dis[LMT]; vector< pair<int,int> >gr[LMT]; int n; bool cmp( pair<int,int> a,pair<int,int>b) { if(a.second!=b.second)return a.second<b.second; return a.first<b.first; } void inidfs(int u,int pre) { for(int v=0;v<n;v++) if(v!=pre&&gra[u][v]) { inidfs(v,u); if(gr[v].size()>0) { pair<int,int> p=gr[v][gr[v].size()-1]; gr[u].push_back(make_pair(v,p.second+1)); } else gr[u].push_back(make_pair(v,1)); } if(gr[u].size()>0) sort(gr[u].begin(),gr[u].end(),cmp); } void dfs(int u,int pre) { int siz; if(pre!=-1) { dis[u]=dis[pre]+1; siz=gr[pre].size(); if(siz>0&&u==gr[pre][siz-1].first) { if(siz>1&&dis[u]<gr[pre][siz-2].second+1) dis[u]=gr[pre][siz-2].second+1; } else if(siz>0&&dis[u]<gr[pre][siz-1].second+1)dis[u]=gr[pre][siz-1].second+1; } for(int v=0;v<n;v++) if(v!=pre&&gra[u][v]) dfs(v,u); } int solve(void) { int ret=-1; for(int i=0;i<n;i++)gr[i].clear(); memset(dis,0,sizeof(dis)); inidfs(0,-1); ret=gr[0][gr[0].size()-1].second; dfs(0,-1); for(int i=0;i<n;i++) ret=ret>dis[i]?ret:dis[i]; return ret; } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int N,ans=0; scanf("%d",&N); while(N--) { memset(gra,0,sizeof(gra)); scanf("%d",&n); for(int i=0;i<n-1;i++) { int u,v; scanf("%d%d",&u,&v); u--;v--; gra[u][v]=gra[v][u]=1; } ans+=solve(); } printf("%d\n",ans); return 0; }
相关文章推荐
- CodeForces 500 D. New Year Santa Network(树形DP)
- Codeforces 538E. Demiurges Play Again (树形DP)
- CodeForces 219D Choosing Capital for Treeland (树形DP)
- codeforces 23E 树形DP
- Codeforces 239E World Eater Brothers【思维+树形Dp】
- codeforces 337D Book of Evil (树形dp)
- Codeforces 337D Book of Evil【树形Dp】好题~好题~
- codeforces 855C Helga Hufflepuff's Cup (树形dp)
- codeforces 538E E. Demiurges Play Again(博弈+树形dp)
- Codeforces 77C 树形dp + 贪心
- Codeforces 23E (大数乘法+树形dp)
- codeforces 61D Eternal Victory 树形DP
- CodeForces 77C Beavermuncher-0xFF (树形dp)
- CodeForces 627D Preorder Test(树形DP+二分)
- New Year Santa Network - CodeForces 500 D 树形dp
- CodeForces 629E(#343)|Famil Door and Roads|树形dp|概率
- CodeForces 219D-Choosing Capital for Treeland(树形dp)
- codeforces 543D D. Road Improvement(树形dp)
- Codeforces 743D 树形dp
- [codeforces 219D] Choosing Capital for Treeland (树形dp)