题解报告:poj 2631 Roads in the North(最长链)

Description

Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route from a village to a village that does not pass through some other village twice. 
Given is an area in the far North comprising a number of villages and roads among them such that any village can be reached by road from any other village. Your job is to find the road distance between the two most remote villages in the area. 
The area has up to 10,000 villages connected by road segments. The villages are numbered from 1.

Input

Input to the problem is a sequence of lines, each containing three positive integers: the number of a village, the number of a different village, and the length of the road segment connecting the villages in kilometers. All road segments are two-way.

Output

You are to output a single integer: the road distance between the two most remote villages in the area.

Sample Input

5 1 6
1 4 5
6 3 9
2 6 8
6 1 7

Sample Output

22AC代码:
 1 #include<iostream>
 2 #include<string.h>
 3 #include<cstdio>
 4 using namespace std;
 5 const int maxn=1e4+5;
 6 struct node{int to,cap,next;}edge[maxn<<1];
 7 int x,y,w,cnt,maxdist,head[maxn];
 8 void add_edge(int u,int v,int w){
 9     edge[cnt].to=v;
10     edge[cnt].cap=w;
11     edge[cnt].next=head[u];
12     head[u]=cnt++;
13 }
14 int dfs(int u,int fa,int &maxdist){
15     int Dmax=0,Dsec=0;
16     for(int i=head[u];~i;i=edge[i].next){
17         int v=edge[i].to;
18         if(v^fa){
19             int nowd=dfs(v,u,maxdist)+edge[i].cap;
20             if(nowd>Dmax)Dsec=Dmax,Dmax=nowd;
21             else if(nowd>Dsec)Dsec=nowd;
22         }
23     }
24     maxdist=max(maxdist,Dmax+Dsec);
25     return Dmax;
26 }
27 int main(){
28     memset(head,-1,sizeof(head));maxdist=cnt=0;
29     while(~scanf("%d %d %d",&x,&y,&w)){
30         add_edge(x,y,w);
31         add_edge(y,x,w);
32     }
33     dfs(1,-1,maxdist);
34     printf("%d\n",maxdist);
35     return 0;
36 }

原文地址:https://www.cnblogs.com/acgoto/p/9611165.html

时间: 2024-10-11 10:54:06

题解报告:poj 2631 Roads in the North(最长链)的相关文章

poj 2631 Roads in the North

题目连接 http://poj.org/problem?id=2631 Roads in the North Description Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route from a village to

POJ 2631 Roads in the North (求树的直径)

Description Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route from a village to a village that does not pass through some other village

POJ 2631 Roads in the North 树的直径

题目大意:裸的树的直径. 思路:随便用一个点跑BFS,求出这个点到所有点的距离,取距离最长的那个点,再用那个点跑BFS,最远的距离就是这棵树的直径. CODE: #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define MAX 20010 using namespace std; int x,y,z;

【poj】 Roads in the North 题解

题目链接:http://poj.org/problem?id=2631 求树的直径模板. 定理: 树上任意一个点的在树上的最长路一定以树的直径的两端点其中一点结束. 做法: 两边bfs,第一次先找到node(树的直径的两端点其中一个),再一次求node的最长路所结束的点t node->t就是树的直径 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #in

题解报告:hdu 4607 Park Visit(最长路+规律)

Problem Description Claire and her little friend, ykwd, are travelling in Shevchenko's Park! The park is beautiful - but large, indeed. N feature spots in the park are connected by exactly (N-1) undirected paths, and Claire is too tired to visit all

poj 1724 ROADS 解题报告

题目链接:http://poj.org/problem?id=1724 题目意思:给出一个含有N个点(编号从1~N).R条边的有向图.Bob 有 K 那么多的金钱,需要找一条从顶点1到顶点N的路径(每条边需要一定的花费),前提是这个总花费  <= K. 首先这里很感谢 yunyouxi0 ,也就是我们的ACM队长啦~~~,他一下子指出了我的错误——存储重边的错误.这条题卑鄙的地方是,有重边,discuss 中的数据过了也不一定会AC啦.大家不妨试试这组数据(队长深情奉献^_^) 2 2 2 1

题解报告:poj 3320 Jessica&#39;s Reading Problem(尺取法)

Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is coming, yet she has spent little time on it. If she wants to pass it, she has to master all ideas included in a very thick text book. The au

题解报告:poj 2480 Longge&#39;s problem(欧拉函数)

Description Longge is good at mathematics and he likes to think about hard mathematical problems which will be solved by some graceful algorithms. Now a problem comes: Given an integer N(1 < N < 2^31),you are to calculate ∑gcd(i, N) 1<=i <=N. 

线段树&#183;题解报告

线段树·题解报告 参考资料 ·课件 线段树 --刘汝佳 统计的力量,线段树全接触 --张昆玮 ·Blog [完全版]线段树 从普通线段树到zkw线段树 [总结][数据结构]ZKW线段树详解 选题目录 · Hdu1166 敌兵布阵(单点更新,区间求和) · Hdu1754 I Hate It(单点更新,RMQ) · Hdu3308 LCIS(单点更新,区间并) · Poj3468 A Simple Problem with Integers(区间加减,区间求和) · Poj2777 Count C