hdu 1874 畅通工程续 floyd
来源:互联网 发布:逍遥游2.4软件下载 编辑:程序博客网 时间:2024/06/05 16:36
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>#define ll long long#define N 10007#include<iostream>using namespace std;double nana(double x1, double y1, double x2, double y2) { return (double)(x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);}int na[1003][10003];int main(){ int n,m; while(cin>>n>>m) { for(int i=0;i<n;i++)for(int j=0;j<n;j++) if(i==j) na[i][j]=0; else na[i][j]=N; int a,b,c; for(int i=0;i<m;i++) {scanf("%d%d%d",&a,&b,&c); na[b][a]=na[a][b]=min(na[a][b],c); } //路是可合并de。。。 for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { for(int k=0;k<n;k++) { na[k][i]=na[i][k]=min(na[i][j]+na[j][k],na[i][k]); } } } int x,y; cin>>x>>y; if(na[x][y]==N) cout<<-1<<endl; else cout<<na[x][y]<<endl; }}
某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。
现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。
本题目包含多组数据,请处理到文件结束。
每组数据第一行包含两个正整数N和M(0
#include<stdio.h>#include<string.h>#include<algorithm>#define mmm 10001using namespace std;int dis[1003];int book[10003];int maps[1003][1003];int x,y;int n,m;void dijkstra(){ memset(book,0,sizeof(book)); for(int i=0; i<n; i++) dis[i]=maps[x][i]; book[x]=1; for(int i=1; i<n; i++) { int m_min=mmm; int flag=0; for(int j=0; j<n; j++) { if(m_min>dis[j]&&!book[j]) { m_min=dis[j]; flag=j; } } book[flag]=1; for(int j=0; j<n; j++) { if(dis[flag]+maps[flag][j]<dis[j]) { dis[j]=dis[flag]+maps[flag][j]; } } }}void floyd(){ for(int i=0; i<n; i++) { for(int j=0; j<n; j++) for(int k=0; k<n; k++) { maps[j][i]=maps[i][j]=min(maps[i][k]+maps[k][j],maps[i][j]); } }}int main(){ while(scanf("%d%d",&n,&m)==2) { memset(book,0,sizeof(book)); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(i==j) maps[i][j]=0; else maps[i][j]=mmm; } } for(int i=0; i<m; i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(c<maps[a][b]) { maps[a][b]=c; maps[b][a]=c; } } scanf("%d%d",&x,&y); dijkstra(); if(dis[y]==mmm) printf("-1\n"); else printf("%d\n",dis[y]); }}
0 0
- hdu 1874 畅通工程续(Floyd)
- 【floyd】HDU 1874 畅通工程续
- hdu 1874 畅通工程续(Floyd)
- HDU - 1874 - 畅通工程续(Floyd)
- hdu 1874 畅通工程续(Floyd算法)
- HDU 1874-畅通工程续(Floyd)
- hdu 1874畅通工程续 Floyd算法
- hdu 1874 畅通工程续 floyd
- HDU 1874 畅通工程续(Floyd)
- hdu 1874畅通工程续 floyd
- HDU 1874-畅通工程续(floyd&&Dijkstra)
- hdu 1874 畅通工程续(floyd
- HDU 1874 畅通工程续 SPFA || dijkstra||floyd
- [dijkstra/SPFA/floyd]HDU 1874畅通工程续
- hdu 1874 畅通工程续(最短路floyd)
- HDU-#1874 畅通工程续(Dijkstra、Floyd、SPFA)
- hdu 1874 畅通工程续 【Dijkstra Floyd-Warshall算法】
- dijkstra,bellman-ford,floyd,HDU—1874 畅通工程续
- qt信号和槽
- 三国游戏_洛谷1199_博弈
- 简单的定时中断(1s)
- 概率论
- Java中ArrayList类的用法(转)
- hdu 1874 畅通工程续 floyd
- 富文本之BootStrap-wysiwyg
- ZCMU-1838-字母图形
- c++备忘2
- IAR MSP430如何生成烧写文件
- 将数从大到小输出以矩阵形式
- 王幼军:拉普拉斯概率理论的历史研究
- Qt Model-View (1)
- [BZOJ2732][HNOI2012]射箭(二分+半平面交)