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 & ...
随机推荐
- Redis之哨兵机制(sentinel)——配置详解及原理介绍
说到Redis不得不提哨兵模式,那么究竟哨兵是什么意思?为什么要使用哨兵呢? 接下来一一为您讲解: 1.为什么要用到哨兵 哨兵(Sentinel)主要是为了解决在主从(master-slave)复制架 ...
- Gym - 101981D Country Meow(模拟退火)题解
题意: 给\(n\)个三维点,问最小覆盖球的半径. 思路: 模拟退火. 代码: #include<set> #include<map> #include<cmath> ...
- 图片转tfrecords
import numpy as np import tensorflow as tf import time import os import cv2 from sklearn.utils impor ...
- HTML Custom Elements & valid name
HTML Custom Elements & valid name valid custom element name https://html.spec.whatwg.org/multipa ...
- 「NGK每日快讯」12.18日NGK公链第45期官方快讯!
- NGK Global-下一个千亿市场来袭
6月4日,NGK Global开启了全球巡回路演,NGK全球社区经过激烈的讨论,最终决定由美国社区发起,在纽约举办NGK Global第一场路演. 路演讲师Viko就NGK的IPFS协议以及NGK未来 ...
- CloudQuery v1.2.1 版本发布
欢迎来到 CloudQuery v1.2.1 版本发布会. 上次 v1.2.0 版本发布收到广大朋友们的热烈反响,大家提出了很多宝贵建议,揪出了不少 Bug.在此,我们表示由衷感谢.问题和建议我们都会 ...
- 远程过程调用框架——gRPC
gRPC是一款基于http协议的远程过程调用(RPC)框架.出自google.这个框架可以用来相对简单的完成如跨进程service这样的需求开发. 资料参考: https://blog.csdn.ne ...
- HQYJ嵌入式学习笔记——C语言复习day1
第一天:Linux命令 vim操作 第二天:数据类型 运算符 顺序语句第三天:分支语句 循环语句第四天:循环语句 数组第五天:数组第六天:指针第七天:函数 数组与指针第八天:数组指针第九天:递归 第十 ...
- 消息中间件选型分析:从 Kafka 与 RabbitMQ 的对比看全局
本文转载自消息中间件选型分析:从 Kafka 与 RabbitMQ 的对比看全局 前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布 ...