poj 2387 Dijkstra入门(动态图解)
来源:互联网 发布:国外国内四大数据库 编辑:程序博客网 时间:2024/06/14 07:08
Til the Cows Come Home
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 43861 Accepted: 14902
Description
Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possible.
Farmer John's field has N (2 <= N <= 1000) landmarks in it, uniquely numbered 1..N. Landmark 1 is the barn; the apple tree grove in which Bessie stands all day is landmark N. Cows travel in the field using T (1 <= T <= 2000) bidirectional cow-trails of various lengths between the landmarks. Bessie is not confident of her navigation ability, so she always stays on a trail from its start to its end once she starts it.
Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exists.
Farmer John's field has N (2 <= N <= 1000) landmarks in it, uniquely numbered 1..N. Landmark 1 is the barn; the apple tree grove in which Bessie stands all day is landmark N. Cows travel in the field using T (1 <= T <= 2000) bidirectional cow-trails of various lengths between the landmarks. Bessie is not confident of her navigation ability, so she always stays on a trail from its start to its end once she starts it.
Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exists.
Input
* Line 1: Two integers: T and N
* Lines 2..T+1: Each line describes a trail as three space-separated integers. The first two integers are the landmarks between which the trail travels. The third integer is the length of the trail, range 1..100.
* Lines 2..T+1: Each line describes a trail as three space-separated integers. The first two integers are the landmarks between which the trail travels. The third integer is the length of the trail, range 1..100.
Output
* Line 1: A single integer, the minimum distance that Bessie must travel to get from landmark N to landmark 1.
Sample Input
5 51 2 202 3 303 4 204 5 201 5 100
Sample Output
90
Hint
INPUT DETAILS:
There are five landmarks.
OUTPUT DETAILS:
Bessie can get home by following trails 4, 3, 2, and 1.
There are five landmarks.
OUTPUT DETAILS:
Bessie can get home by following trails 4, 3, 2, and 1.
题意:就是给你 n 个岛屿,t 条路径
然后下面就是 t 行:每一行表示 从 某一个点到某一个点,并且给出距离
这个算法的动态图
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxx=1010;const int INF=0x3f3f3f3f;int map[maxx][maxx];//记录点到点int path[maxx];//代表走到位置 i 需要最少走多远int flag[maxx];//标记是否遍历过//-----------查找没有被遍历过的最小路径---------//int find_it(int n){ int pos=-1,min=INF; for(int i=1;i<=n;i++){ if(!flag[i]&&path[i]<min){ min=path[i]; pos=i; } } return pos;}//----------------------------------------------//void Dijkstra(int n){ for(int i=1;i<=n;i++){ path[i]=INF; flag[i]=0; } path[n]=0;//方便第一次查找就是找到起点//----------------------------------------------// int p=find_it(n); while(p!=-1) { flag[p]=1; for(int i=1;i<=n;i++){ if(!flag[i]&&path[p]+map[p][i]<path[i]) path[i]=path[p]+map[p][i]; } p=find_it(n); }}//----------------------------------------------//int main(){ freopen("in.txt","r",stdin); int t,n; scanf("%d%d",&t,&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) map[i][j]=INF;//----------------------------------------------// int row,col,distance; for(int i=1;i<=t;i++){ scanf("%d%d%d",&row,&col,&distance); if(distance<map[row][col]){ map[row][col]=distance; map[col][row]=distance; } }//----------------------------------------------// Dijkstra(n); printf("%d\n",path[1]); return 0;}
0 0
- poj 2387 Dijkstra入门(动态图解)
- 图论入门(2):Dijkstra算法(POJ 2387)
- POJ 2387 (Dijkstra)
- POJ Dijkstra入门
- poj 2387(Dijkstra优先队列优化)
- POJ 2387(最短路dijkstra)
- poj 2387 dijkstra
- POJ 2387 dijkstra水题
- poj 2387 Dijkstra
- poj 2387 dijkstra
- poj Subway(dijkstra)
- poj 2502 Subway dijkstra基础 !!!!入门题
- 最短路dijkstra算法详解:dijkstra(图解)(详
- POJ 2387 裸的dijkstra
- POJ 1062 枚举+dijkstra()
- poj 2253 Frogger(dijkstra)
- POJ - 2253 - Frogger (Dijkstra)
- POJ 2253 Frogger(dijkstra)
- git修改文件名大小写敏感问题解决
- hiho一下 第108周_Memory Allocating Algorithm(双向链表)
- vim学习
- 一些小知识点(3)
- 逆向,从这里开始
- poj 2387 Dijkstra入门(动态图解)
- 一种计算Visual Hull的方法
- 【C++学习之路】VS2015中cout、cin未声明的标识符错误的处理
- 【eclipse】格式快捷键ctrl shift f
- 简单生成二维码的Demo
- Fail Fast And Fail Safe Iterators In Java
- Redis之利用锁机制来防止缓存过期产生的惊群现象
- Android Storage Options(存储方式)
- setValueForKeyPath理解。访问设置对象的属性的话可以使用setValue forKey 访问属性的属性forKeyPath