图结构练习——最短路径
来源:互联网 发布:数控仿真模拟软件 编辑:程序博客网 时间:2024/05/29 15:27
图结构练习——最短路径
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 21 2 11 3 11 0
Example Output
10
Hint
#include <string.h>
int gp[120][120];
int dist[120];
int path[120];
int n,m;
void dista()
{
int v[110],i,j;
for(i=1;i<=n;i++)
{
dist[i]=gp[1][i];
if(i!=1&&dist[i]<0x3f3f3f)
{
path[i]=1;
}
else
{
path[i]=-1;
}
}
memset(v,0,sizeof(v));
v[1]=1;
dist[1]=0;
for(i=2;i<=n;i++)
{
int min=0x3f3f3f;
int k=1;
for(j=1;j<=n;j++)
{
if(!v[j]&&dist[j]<min)
{
min=dist[j];
k=j;
}
}
v[k]=1;
for(j=1;j<=n;j++)
{
if(!v[j]&&dist[k]+gp[k][j]<dist[j])
{
dist[j]=dist[k]+gp[k][j];
path[j]=k;
}
}
}
}
int main()
{
int i,j;
while(~scanf("%d%d",&n,&m))
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
{
gp[i][j]=0;
}
else
{
gp[i][j]=0x3f3f3f;
}
}
}
int a,b,c;
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(gp[a][b]>c)
{
gp[a][b]=c;
gp[b][a]=c;
}
}
dista();
printf("%d\n",dist[n]);
}
return 0;
}
0 0
- SDUT2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径(sdut_2143)
- 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- SDUTACM 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- SDUT2143图结构练习——最短路径
- 获取内置sd卡和外置sd卡的方法!经三星pad SM T585c型号测试有效。
- 智能电源管理技术--原理简介
- 从源码分析View绘制流程
- 关于android有用的干货知识点
- 并发并行同步异步多线程的区别
- 图结构练习——最短路径
- Hbuilder IOS 开发中问题整理
- Swift - 自由调整图标按钮中的图标和文字位置(扩展UIButton)
- Android源码查找的一己之见
- linux下svn常用指令
- compileSdkVersion、minSdkVersion、targetSdkVersion详解
- java的多线程笔记
- es6学习之路(7):函数的扩展
- 语句-循环结构for