SPOJ 9126 Time to live
来源:互联网 发布:lol网络延迟100ms 编辑:程序博客网 时间:2024/06/04 18:23
点击打开SPOJ 9126
题意:给定一个n台计算机的网络的连接图,这个图是一棵树的形式。现在要以某一台计算机为路由器,问其它的计算机到路由器的最长的距离的最小值
思路:给定一个树,我们能够求出树的直径。那么直径的两端的距离是最长的,那么路由器的选择肯定是在树的直径上面的某一点,因为要距离最小因此选择中间的点肯定能够满足。那么maxLen为直径的话,ans为(maxLen+1)/2
代码:
#include<vector>#include<queue>#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int MAXN = 100010;struct Node{ int num; int step;};int n , start , maxLen;bool vis[MAXN];vector<int>v[MAXN]; queue<Node>q;void init(){ for(int i = 0 ; i < n ; i++) v[i].clear(); int x , y; for(int i = 1 ; i < n ; i++){ scanf("%d%d" , &x , &y); v[x].push_back(y); v[y].push_back(x); }}void bfs(){ maxLen = 0; while(!q.empty()){ Node tmp = q.front(); q.pop(); int x = tmp.num; int size = v[x].size(); bool isOk = false; vis[x] = true; for(int i = 0 ; i < size ; i++){ if(!vis[v[x][i]]){ q.push((Node){v[x][i] , tmp.step+1}); isOk = true; } } if(!isOk && maxLen < tmp.step){ maxLen = tmp.step; start = x; } }}int solve(){ while(!q.empty()) q.pop(); q.push((Node){0,0}); memset(vis , false , sizeof(vis)); bfs(); while(!q.empty()) q.pop(); q.push((Node){start,0}); memset(vis , false , sizeof(vis)); bfs(); return (maxLen+1)/2;}int main(){ int cas; scanf("%d" , &cas); while(cas--){ scanf("%d" , &n); init(); printf("%d\n" , solve()); } return 0;}
- SPOJ 9126 Time to live
- Time to live (TTL)
- Time to live exceeded
- TTL time to live
- 生存时间TTL(time to live)
- TTL(time to live)生存时间
- Spring Data Redis(Repositories-Time To Live)
- MongoDB2.2 的 Time To Live (TTL) 集合一些注意事项
- MongoDB 2.2 的 Time To Live (TTL) 集合
- MongoDB 2.2 的 Time To Live (TTL) 集合
- IP协议里的Time To Live(TTL)
- IP协议包中的TTL(Time-To-Live)
- RabbitMQ之TTL(Time-To-Live 过期时间)
- SPOJ GCPC11JTime to live(求一棵树的直径(两个BFS))
- SPOJ Time Limit Exceeded
- To live on for a longer time in addition to superior, this scientific discipline is usually distinct
- Words To Live By
- LiveCD to Live USB
- 工厂方法模式lua实现
- 3,Objective-C语法之字符串NSString
- 4,Objective-C语法之类和对象
- Jquery DataTable插件使用(1)
- 5,Objective-C语法之异常处理
- SPOJ 9126 Time to live
- 6,Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
- 查表法的应用举例
- 7,Objective-C语法之内存管理
- MapReduce 2.0 in Apache Hadoop 0.23
- 8,Objective-C语法之NSArray和NSMutableArray
- ORA-00257 archiver error. 错误的处理方法
- 9,Objective-C语法之NSDictionary和NSMutableDictionary
- 给计算机专业大学生整理的书单