图结构练习——最短路径 dijkstra算法
2017-02-27 22:20
260 查看
图结构练习——最短路径
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
给定一个带权无向图,求节点1到节点n的最短路径。
Input
输入包含多组数据,格式如下。
第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)
剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。
Output
每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在)
Example Input
3 2
1 2 1
1 3 1
1 0
Example Output
1
0
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
给定一个带权无向图,求节点1到节点n的最短路径。
Input
输入包含多组数据,格式如下。
第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)
剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。
Output
每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在)
Example Input
3 2
1 2 1
1 3 1
1 0
Example Output
1
0
#include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f int map[105][105]; int vis[105]; int dist[105]; void dijkstra(int n)//n为终点 { int i, j, k, min, u; for(i = 1; i <= n; i++) { dist[i] = map[1][i];/*1为起始点,将1到的i点的距离,存入dist*/ } vis[1] = 1;//走过的标记一下 for(i = 1; i < n; i++)//进行n-1次查找 { min = INF; for(j = 1; j <= n; j++) { if(min > dist[j] && !vis[j])//找出没有被标记距离起始点最近的点 { min = dist[j];//记录大小 u = j;//记录第几个点 } } vis[u] = 1;//标记一下 for(k = 1; k <= n; k++) { if(!vis[k] && map[u][k] < INF && dist[k] > map[u][k] + dist[u])//更新dist[k]值的大小 { dist[k] = map[u][k] + dist[u]; } } } printf("%d\n", dist ); } int main() { int n, m, u, v, c, i, j; while(~scanf("%d %d", &n, &m)) { memset(vis, 0, sizeof(vis)); memset(map, INF, sizeof(map)); for(i = 1; i <= n; i++) { map[i][i] = 0;//初始化map[][]数组,除了自己到自己本身,距离为0,其他全设为无穷大 } while(m--) { scanf("%d %d %d", &u, &v, &c);//输入 if(map[u][v] > c) map[u][v] = map[v][u] = c; } dijkstra(n);//调用,函数 } return 0; }
相关文章推荐
- 图结构练习——最短路径(Dijkstra算法)
- 图结构练习——最短路径
- 【2143】图结构练习——最短路径 (Dijkstra算法)(SDUT)
- 【2143】图结构练习——最短路径 (Dijkstra算法)(SDUT)
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
- 图结构练习——最短路径(dijkstra算法(迪杰斯拉特))
- 图结构练习——最短路径
- 图结构练习——最短路径(Dijkstra算法)
- 图结构练习——最短路径
- 图结构练习——最短路径(dijkstra算法)
- 最小生成树(prime算法 & kruskal算法)和 最短路径算法(floyd算法 & dijkstra算法)
- hihoCoder #1081 : 最短路径·一 (Dijkstra算法)
- 最短路径下的Dijkstra算法和Floyd算法
- sdut acm 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 有向图中单个源点到终点的最短路径--Dijkstra算法与实现
- 最短路径—Dijkstra算法和Floyd算法
- Dijkstra算法之最短路径
- 最短路径—Dijkstra算法和Floyd算法