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 & ...
随机推荐
- PAT L2-005. 集合相似度 【stl set】
给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输 ...
- spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
前言 spring boot集成mybatis时只生成两个sql, 搞了一个早上,终于找到原因了 找了很多办法都没有解决, 最后注意到生成sql的时候打印了一句话: Cannot obtain pri ...
- Pycharm缺少环境变量+无法获取libcudnn.so.6
在终端输入: echo LD_LIBRARY_PATH, 并将其内容 添加至Pycharm的 run -> Edit configuration -> Environment variab ...
- TypeScript callback Object params
TypeScript callback Object params 回调函数 对象 参数 const func = (options = {}) => { // do somthing retu ...
- Javascript 严格模式("use strict";)详细解解
1 1 1 Javascript 严格模式("use strict";)详细解解 "use strict";定义JavaScript代码应该在"str ...
- ORM All In One
ORM All In One ORM Object Relational Mapping https://en.wikipedia.org/wiki/Object-relational_mapping ...
- import script module
import script module .mjs <script type="module"> import {addTextToBody} from './util ...
- script async / defer
script async / defer preload / prefetch https://abc.xgqfrms.xyz/ https://javascript.info/script-asyn ...
- 为什么说NGK公链的商用落地是可行的?
互联网.大数据以及云计算的发展给人们的生活.工作带来了诸多便利,也让人们一次又一次感叹科技的进步.而NGK公链的诞生,更是让众人称之为传奇.其商用落地可行性,也让人惊叹.那么,为什么说NGK公链的商用 ...
- java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类
一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...