POJ Problem 1985 Cow Marathon 【树的直径】
来源:互联网 发布:苹果手机真伪查询知乎 编辑:程序博客网 时间:2024/06/07 18:37
Cow Marathon
Time Limit: 2000MS Memory Limit: 30000KTotal Submissions: 4882 Accepted: 2380Case Time Limit: 1000MS
Description
After hearing about the epidemic of obesity in the USA, Farmer John wants his cows to get more exercise, so he has committed to create a bovine marathon for his cows to run. The marathon route will include a pair of farms and a path comprised of a sequence of roads between them. Since FJ wants the cows to get as much exercise as possible he wants to find the two farms on his map that are the farthest apart from each other (distance being measured in terms of total length of road on the path between the two farms). Help him determine the distances between this farthest pair of farms.
Input
* Lines 1.....: Same input format as "Navigation Nightmare".
Output
* Line 1: An integer giving the distance between the farthest pair of farms.
Sample Input
7 61 6 13 E6 3 9 E3 5 7 S4 1 3 N2 4 20 W4 7 2 S
Sample Output
52
Hint
The longest marathon runs from farm 2 via roads 4, 1, 6 and 3 to farm 5 and is of length 20+3+13+9+7=52.
Source
USACO 2004 February
模板。
#include <cstring>#include <cstdio>#include <queue>#define MAXN 30010using namespace std;struct node{ int from, to, val, next;} edge[MAXN];bool vis[MAXN];int dist[MAXN], head[MAXN], edgenum, ans, s;void init() { memset(head, -1, sizeof(head)); edgenum = 0;}void addedge(int x, int y, int z) { edge[edgenum].from = x; edge[edgenum].to = y; edge[edgenum].val = z; edge[edgenum].next = head[x]; head[x] = edgenum++;}void bfs(int x) { queue<int> que; ans = 0; memset(vis, false, sizeof(vis)); memset(dist, 0, sizeof(dist)); while (!que.empty()) que.pop(); que.push(x); vis[x] = true; while (que.size()) { int a = que.front(); que.pop(); for (int i = head[a]; i != -1; i = edge[i].next) { int b = edge[i].to; if (!vis[b] && dist[b] < dist[a] + edge[i].val) { dist[b] = dist[a] + edge[i].val; if(ans < dist[b]) { ans = dist[b]; s = b; } vis[b] = true; que.push(b); } } }}int main() { int a, b, c, n, m; while (scanf("%d%d", &n, &m) != EOF) { init(); char d; for (int i = 0; i < m; i++) { scanf("%d%d%d %c", &a, &b, &c, &d); addedge(a, b, c); addedge(b, a, c); } bfs(1); bfs(s); printf("%d\n", ans); } return 0;}
0 0
- POJ Problem 1985 Cow Marathon 【树的直径】
- POJ 1985 Cow Marathon 树的直径
- POJ 1985 Cow Marathon 树的直径
- 【树的直径】 POJ 1985 Cow Marathon
- poj 1985 Cow Marathon 【树的直径】
- POJ 1985 Cow Marathon(树的直径)
- poj 1985 Cow Marathon 【树的直径】
- poj-1985-Cow Marathon【树的直径】
- poj 1985 Cow Marathon 树的直径
- Poj 1985 Cow Marathon ( 树的直径
- [POJ 1985][树的直径]Cow Marathon
- poj 1985 Cow Marathon(树直径)
- [poj 1985]Cow Marathon[求树的直径][BFS]
- [POJ 1985] Cow Marathon (树的直径)
- BZOJ 3363 POJ 1985 Cow Marathon 树的直径
- POJ 1985--Cow Marathon【树的直径 && 模板】
- POJ 1985 Cow Marathon(求树的直径)
- POJ 1985 Cow Marathon(树的直径)
- 涉及微信的相关问题
- python中scikit-learn机器学习例子
- tomcat7.0 内存配置
- linux性能分析常用命令详解
- 第十一章 认识与学习BASH
- POJ Problem 1985 Cow Marathon 【树的直径】
- 解决android4.4以上手机调用系统相册路径返回错误的问题
- MongDB 启动警告 WARNING: soft rlimits too low
- VPN的简介和使用说明
- 朴素贝叶斯(Naive Bayesian)分类器原理入门
- 27. Remove Element
- Axure-入门
- 从头学android_双击事件(多击事件)的算法
- viewPager嵌套viewPager的事件冲突问题,