标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2428 | Accepted: 1190 |
Description
Input
Output
Sample Input
5 1 6 1 4 5 6 3 9 2 6 8 6 1 7
Sample Output
22
Source
#include <queue> #include <cstdio> #include <cstring> #define N 100000+10 #define M 100000+10 using namespace std; struct Edge { int from, to, val, next; }edge[M]; int head[N], cnt; int dist[N]; bool vis[N]; int node; int ans; void init() { cnt=0; memset(head, -1, sizeof(head)); } int dfs(int sx) { queue<int> Q; memset(dist, 0, sizeof(dist)); memset(vis, false, sizeof(vis)); vis[sx]=true; Q.push(sx); node=sx; ans=0; while(!Q.empty()) { int u=Q.front(); Q.pop(); for(int i=head[u]; i!=-1; i=edge[i].next) { Edge E=edge[i]; if(!vis[E.to]&&dist[E.to]<dist[u]+E.val) { dist[E.to]=dist[u]+E.val; vis[E.to]=true; Q.push(E.to); if(dist[E.to]>ans) { ans=dist[E.to]; node=E.to; } } } } } void solve() { dfs(1); dfs(node); printf("%d\n", ans); } void add(int u, int v, int w) { Edge E={u, v, w, head[u]}; edge[cnt]=E; head[u]=cnt++; } int main() { int a, b, c; init(); while(scanf("%d%d%d", &a, &b, &c) != EOF) { add(a, b, c); add(b, a, c); } solve(); return 0; }
Poj2631--Roads in the North(树的直径)
标签:
原文地址:http://www.cnblogs.com/fengshun/p/5272195.html