关闭

poj 1985 Cow Marathon

标签: pojdfs
189人阅读 评论(0) 收藏 举报
分类:

@(K ACMer)


题意:
求树的最长路径
分析:
两次dfs求树的直径,无它.


#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <string>
#include <queue>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef vector<int> vi;
#define xx first
#define yy second
const int mod = int(1e9) + 7, INF = 0x3fffffff, maxn = 1e5 + 40;
vector<pii> v[maxn];
int n, m, l, s;

void dfs(int x, int y, int pre) {
    if (y > l) s = x, l = y;
    for (int i = 0; i < v[x].size(); i++) {
        if (v[x][i].xx == pre) continue;
        dfs(v[x][i].xx, y + v[x][i].yy, x);
    }
    return;
}


int main(void) {
    while (~scanf("%d%d", &n, &m)) {
        while (m--) {
            int x, y, z;
            scanf("%d%d%d %*c", &x, &y, &z);
            v[x].push_back(make_pair(y, z));
            v[y].push_back(make_pair(x, z));
        }
        l = 0;
        dfs(1, 0, -1);
        l = 0;
        dfs(s, 0, -1);
        printf("%d\n", l);
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:135116次
    • 积分:5674
    • 等级:
    • 排名:第4574名
    • 原创:446篇
    • 转载:3篇
    • 译文:0篇
    • 评论:37条