此题求的是树的最长链, 要注意此题不能用dis[maxn][maxn]来记录a, b两点的距离,这样会超空间, 也就是超内存,要用另一种储存方式储存。此题思想很简单, 随便选一个点,搜此点能到的最远距离, 并记录最远距离的点, 然后再从最远距离的点搜这点能到的最远距离, 这个dis就是答案。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <queue>
#define mem(a) memset(a, 0, sizeof(a))
using namespace std;int m, n, ans, flag, num, head[100005];
bool vis[100005];struct eage
{int to;int next;int eg;
}e[100005];void add(int a, int b, int eg)
{e[num].to = b;e[num].eg = eg;e[num].next = head[a];head[a] = num++;e[num].to = a;e[num].eg = eg;e[num].next = head[b];head[b] = num++;
}void bfs(int a)
{int dis = 0, he, to;queue<int> q;q.push(a);q.push(dis);while(!q.empty()){he = q.front();vis[he] = 1;q.pop();dis = q.front();q.pop();to = head[he];while(vis[e[to].to] == 1&&to != -1){to = e[to].next;}while(to != -1&&vis[e[to].to] == 0){q.push(e[to].to);q.push(dis + e[to].eg);if(ans < (dis + e[to].eg))ans = dis + e[to].eg, flag = e[to].to;to = e[to].next;while(vis[e[to].to] == 1&&to != -1){to = e[to].next;}}}
}int main(int argc, char *argv[])
{int i, j, k, l;ans = 0;num = 0;mem(e);mem(vis);memset(head, -1, sizeof(head));scanf("%d%d",&m, &n);for(i = 0;i < n;i++){scanf("%d%d%d%*c%*c%*c", &j, &k, &l);add(j, k, l);}bfs(1);mem(vis);bfs(flag);printf("%d\n", ans);return 0;
}

POJ 1985 Cow Marathon相关推荐

  1. poj 1985 Cow Marathon 【树的直径】

    求树的直径 /* POJ:1985 Cow Marathon 2014/10/12/21:18 Yougth*/ #include <cstdio> #include <iostre ...

  2. 【树的直径】 POJ 1985 Cow Marathon

    给出一棵树 ,和边的权值 求权值最长的一条直径 两次bfs求 第一次以任意点开始 BFS求出第一个端点 第二次以第一次得到的端点 BFS求出第二个端点 #include <cstdio> ...

  3. POJ 3660 Cow Contest [Floyd]

    POJ - 3660 Cow Contest http://poj.org/problem?id=3660 N (1 ≤ N ≤ 100) cows, conveniently numbered 1. ...

  4. poj1985 Cow Marathon(树的直径#入门)

    poj1985 Cow Marathon(树的直径) Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 9110 Accepted: ...

  5. POJ 3660 Cow Contest 传递闭包+Floyd

    原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  6. [POJ 3270]Cow Sorting

    Description Farmer John's N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow ...

  7. poj 3045 Cow Acrobats (贪心!!不是二分,)

    农夫的N只牛(1<=n<=50,000)决定练习特技表演. 特技表演如下:站在对方的头顶上,形成一个垂直的高度. 每头牛都有重量(1 <= W_i <= 10,000)和力量( ...

  8. POJ 3263-Tallest Cow

    Description FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow ...

  9. POJ 3660 Cow Contest

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

最新文章

  1. rpm命令,yum命令大全
  2. 工商企业管理对计算机水平的要求,对工商企业管理的分析
  3. mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
  4. 【测试工程师面试】面试官热衷询问的N个问题
  5. map型字段 mongodb_MongoDB极简教程
  6. Intellij 中的git操作 转!
  7. 自主巡航——高精度地图制作
  8. 女神被打码了?一笔一划脑补回来,效果超越Adobe | 已开源
  9. ae批量修改字体_AE脚本pt_TextEdit v2.5批量修改文字图层样式字体大小属性编辑工具...
  10. 分享苹果电脑和乔布斯的十项成功秘诀
  11. 平均获客成本_互联网金融获客成本
  12. python:计划持有基金n年,求n年的每年复利_利率
  13. HDOJ 6608 Fansblog
  14. 超详细讲解无迹卡尔曼(UKF)滤波(个人整理结合代码分析)
  15. 【面向对象程序设计】侩子手游戏(Java、JavaFX)
  16. 写给MatheMagician读者的新年来信2
  17. 湖南大学与四川大学计算机,四川大学和湖南大学哪个更好一点?都是高校吗?...
  18. 美团codeM资格赛——世界杯
  19. Xshell Error Report,Program has stopped working
  20. ThePowderToy 入门教程

热门文章

  1. 计算机网络末端的RTT,RTT(渲染到纹理)_百度百科
  2. 内网穿透工具 -- piereced
  3. Siebel界面搭建
  4. eclipse中英文切换教程
  5. 【firefox】最新浏览器无法添加组件firebug和firepath的方法
  6. 保底掉落装备matlab,强化保底上线?这些增加强化几率的道具也别忘记使用
  7. Navicat for Mysql 快捷键使用
  8. matlab用博德稳定性判据,自编劳斯判据判断系统稳定性的Matlab函数
  9. git访问相关的问题
  10. 由RS-232串口到PROFIBUS-DP总线的转换接口设计