POJ_2387 Til the Cows Come Hom 【最短路】
一、题目
二、分析
Bellman-Ford算法
该算法是求单源最短路的,核心思想就是不断去更新到起点的最短距离,更新的前提是没有负边。如果有负边需要手动控制循环次数。
Dijkstra算法
同样是单源最短路,它的核心是
(1) 找到最短距离已经确定的顶点,再从该顶点出发,更新与它相邻的点的最短距离。
(2) 对于最短距离已经确定的点不再更新。
Floyd算法
可以求解任意两点之间的最短距离。但是这题会TLE。
三、AC代码
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <vector>
5 #include <fstream>
6 using namespace std;
7 const int MAXN = 2e3+14;
8 const int INF = 0x3f3f3f3f;
9 struct edge
10 {
11 int from, to, cost;
12 }E[MAXN<<1];
13 int T, N, C;
14 int dist[MAXN];
15 void Bellman_Ford()
16 {
17 memset(dist, INF, sizeof(dist));
18 dist[1] = 0;
19 while(1)
20 {
21 bool flag = 0;
22 for(int i = 0; i < C; i++)
23 {
24 if(dist[E[i].from] != INF && dist[E[i].to] > dist[E[i].from] + E[i].cost)
25 {
26 dist[E[i].to] = dist[E[i].from] + E[i].cost;
27 flag = 1;
28 }
29 }
30 if(!flag)
31 break;
32 }
33 }
34 int main()
35 {
36 //freopen("in.txt", "r", stdin);
37 scanf("%d%d", &T, &N);
38 C = 0;
39 int a, b ,c;
40 for(int i = 0; i < T; i++)
41 {
42 scanf("%d%d%d", &a, &b, &c);
43 E[C].from = a, E[C].to = b, E[C].cost = c;
44 C++;
45 E[C].from = b, E[C].to = a, E[C].cost = c;
46 C++;
47 }
48 Bellman_Ford();
49 printf("%d\n", dist[N]);
50 return 0;
51 }
Bellman_Ford
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <vector>
5 #include <fstream>
6 #include <vector>
7 #include <queue>
8 using namespace std;
9 typedef pair<int, int> P;
10 const int MAXN = 2e3+14;
11 const int INF = 0x3f3f3f3f;
12 struct edge
13 {
14 int from, to, cost;
15 edge(int f, int t, int c)
16 {
17 from = f, to = t, cost = c;
18 }
19 };
20 vector<edge> G[MAXN];
21 priority_queue<P> pq;
22 int T, N;
23 int dist[MAXN];
24
25 void Dijkstra(int s)
26 {
27 memset(dist, INF, sizeof(dist));
28 dist[s] = 0;
29 pq.push(P(0, s));
30 while(!pq.empty())
31 {
32 P p = pq.top();
33 pq.pop();
34 int v = p.second;
35 if(dist[v] < p.first)
36 continue;
37 for(int i = 0; i < G[v].size(); i++)
38 {
39 edge e = G[v][i];
40 if(dist[e.to] > dist[v] + e.cost)
41 {
42 dist[e.to] = dist[v] + e.cost;
43 pq.push(P(dist[e.to], e.to));
44 }
45
46 }
47 }
48 }
49
50 int main()
51 {
52 //freopen("in.txt", "r", stdin);
53 scanf("%d%d", &T, &N);
54 int a, b ,c;
55 for(int i = 0; i < T; i++)
56 {
57 scanf("%d%d%d", &a, &b, &c);
58 G[a].push_back(edge(a, b, c));
59 G[b].push_back(edge(b, a, c));
60 }
61 Dijkstra(1);
62 printf("%d\n", dist[N]);
63 return 0;
64 }
Dijkstra
POJ_2387 Til the Cows Come Hom 【最短路】的更多相关文章
- Til the Cows Come Home 最短路Dijkstra+bellman(普通+优化)
Til the Cows Come Home 最短路Dijkstra+bellman(普通+优化) 贝西在田里,想在农夫约翰叫醒她早上挤奶之前回到谷仓尽可能多地睡一觉.贝西需要她的美梦,所以她想尽快回 ...
- POJ2387 Til the Cows Come Home (最短路 dijkstra)
AC代码 POJ2387 Til the Cows Come Home Bessie is out in the field and wants to get back to the barn to ...
- POJ-2387 Til the Cows Come Home ( 最短路 )
题目链接: http://poj.org/problem?id=2387 Description Bessie is out in the field and wants to get back to ...
- Til the Cows Come Home(最短路模板题)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Description Bessie is ...
- POJ 2387 Til the Cows Come Home(最短路模板)
题目链接:http://poj.org/problem?id=2387 题意:有n个城市点,m条边,求n到1的最短路径.n<=1000; m<=2000 就是一个标准的最短路模板. #in ...
- POJ 2387 Til the Cows Come Home --最短路模板题
Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...
- POJ 2387 Til the Cows Come Home (最短路 dijkstra)
Til the Cows Come Home 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description Bessi ...
- POJ 2387 Til the Cows Come Home 【最短路SPFA】
Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...
- POj2387——Til the Cows Come Home——————【最短路】
A - Til the Cows Come Home Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & ...
随机推荐
- JavaScript基本包装类介绍
为了便于操作基本类型值,ECMAScript 提供了 3 个特殊的引用类型:Boolean.Number和 String.这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为.实际上 ...
- HDU 4628 Pieces(状压DP)题解
题意:n个字母,每次可以删掉一组非连续回文,问你最少删几次 思路:把所有回文找出来,然后状压DP 代码: #include<set> #include<map> #includ ...
- Gym 101174D Dinner Bet(概率DP)题解
题意:n个球,两个人每人选C个球作为目标,然后放回.每回合有放回的拿出D个球,如果有目标球,就实现了这个目标,直到至少一个人实现了所有目标游戏结束.问结束回合的期望.误差1e-3以内. 思路:概率DP ...
- 前端安全 All In One
前端安全 All In One refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- wireshark 获取指定进程id的数据
>netstat -aon | findstr 11380 TCP 191.127.1.7:57936 29.225.107.216:3734 ESTABLISHED 11380 过滤器: tc ...
- perl 在windows上获取当前桌面壁纸
更多 #!/usr/bin/perl # 在windows获取当前的桌面壁纸 # See also: https://www.winhelponline.com/blog/find-current-w ...
- HANNAH WHITE:从Facebook谈坚持
HANNAH WHITE于1993年毕业于加州斯坦福大学,被美国多家知名杂志评为最值得关注经济管理学杰出人才,2006年-2009年担任Doll资本管理公司部门主管,2009年-2013年担任Doll ...
- 交易所频频跑路?Baccarat去中心化交易平台助力资金安全
过去,黑客攻击可能是交易所跑路的最常见原因.自OKEx事件以来,这些交易所暂停提币或跑路还多了一个原因,就是因创始人正在协助调查. 据不完全统计,自OKEx于10月16日宣布暂停提币后不到两个月,已经 ...
- Java线程池状态和状态切换
摘要 介绍线程池的五种状态RUNNING.SHUTDOWN.STOP.TIDYING和TERMINATED,并简述五种状态之间的切换. 在类ThreadPoolExecutor中定义了一个成员变量 ...
- 数据库范式(1NF/2NF/3NF)
本文转载自数据库范式(1NF/2NF/3NF) 概述 范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式 ...