hdu 1874 畅通工程续
来源:互联网 发布:手机淘宝有好货报名 编辑:程序博客网 时间:2024/05/16 07:33
1.可能问的时候是同一点例如1 1
2.每两点之间可能有不同距离,例1 2 3 和1 2 4
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int inf=1<<30;const int N=200+5;int n,m,vis[N],edge[N][N],path[N],dist[N];void Dijkstra(int v0){ int i,j,k,u,minx; for(i=0; i<n; i++) { dist[i]=edge[v0][i]; vis[i]=0; if(dist[i]<inf&&i!=v0) path[i]=v0; else path[i]=-1; } vis[v0]=1; dist[v0]=0; for(i=0; i<n-1; i++) { minx=inf,u=v0; for(j=0; j<n; j++) { if(!vis[j]&&dist[j]<minx) { minx=dist[j]; u=j; } } //if(minx==inf) break; vis[u]=1; for(k=0; k<n; k++) { if(!vis[k]&&edge[u][k]<inf&&dist[u]+edge[u][k]<dist[k]) { dist[k]=dist[u]+edge[u][k]; path[k]=u; } } }}int main(){ int i,j,k,u,v,w,s,t; while(~scanf("%d%d",&n,&m)) { memset(edge,0,sizeof(edge)); for(i=0; i<m; i++) { scanf("%d%d%d",&u,&v,&w); if(edge[u][v]==0||edge[u][v]>w) edge[u][v]=edge[v][u]=w; //edge[u][v]=w; } scanf("%d%d",&s,&t); for(i=0; i<n; i++) for(j=0; j<n; j++) { if(i==j) edge[i][j]=0; else if(edge[i][j]==0) edge[i][j]=inf; } Dijkstra(s); if(s==t) printf("0\n"); else if(path[t]!=-1) printf("%d\n",dist[t]); else printf("-1\n"); } return 0;}
0 0
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874(畅通工程续)
- Active Report 导出功能
- 阿里云上安装phpMyAdmin
- 前端测试系列---如何核对需求
- asp.net 用户控件中的委托事件SelectedIndexChanged
- python简洁之道-----Requests库
- hdu 1874 畅通工程续
- IOS同步请求和异步请求的区别
- 安卓入门学习之ListView
- JSON字符串和JSON对像相互转化
- nio client和netty server实例
- 【数据结构】回顾表、栈、队列
- android图文列表
- cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
- Java知识整理——Servlet&JSP