hdu 2066 一个人的旅行 dijkstra
来源:互联网 发布:含金量最高的网络教育 编辑:程序博客网 时间:2024/04/30 11:10
还是用的优先队列和vector,这道题不同的是可能或有多个起点,多个终点,加一个循环就可以了。c++交得加#include<functional> 头文件,g++则不用
代码:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<vector>#include<set>#include<queue> #include<string>#include<algorithm>#include<utility>#include<functional> #define MAX 10010000using namespace std;int d[205];typedef pair<int,int>p;priority_queue<p, vector<p>, greater<p> >q;int gra[205][205];vector<int>v[205]; int visit[205];int n,m,s,t;void dijkstra(){int i,j;for(i=0; i<n; i++)d[i] = MAX;d[s] = 0;memset(visit,0,sizeof(visit));q.push(make_pair(d[s],s)); while(!q.empty()){p u = q.top();q.pop();int x = u.second;if(visit[x])continue;visit[x] = 1;for(j=0; j<v[x].size(); j++)if(!visit[v[x][j]] && d[v[x][j]]>d[x]+gra[x][v[x][j]]){d[v[x][j]] = d[x] + gra[x][v[x][j]];q.push(make_pair(d[v[x][j]],v[x][j]));}}/*for(i=0; i<n; i++){int x ,y = MAX;for(j=0; j<n; j++){if(!visit[j] && d[j] < y)y = d[x = j];}visit[x] = 1;//for(j=0; j<n; j++)//if(!visit[j] && d[j]>d[x]+gra[x][j])//d[j] = d[x] + gra[x][j];for(j=0; j<v[x].size(); j++)if(!visit[v[x][j]] && d[v[x][j]]>d[x]+gra[x][v[x][j]])d[v[x][j]] = d[x] + gra[x][v[x][j]];} */return ;}int main(){int i,j,a,b,c;while(cin >> n >> m){for(i=0; i<205; i++)v[i].clear();for(i=0; i<n; i++)for(j=0; j<n; j++)gra[i][j] = MAX;for(i=1; i<=m; i++){cin >> a >> b >> c;if(gra[a][b] > c) {gra[a][b] = gra[b][a] = c;v[a].push_back(b);v[b].push_back(a);}}cin >> s >> t;dijkstra();if(d[t] < MAX)cout << d[t] << endl;elsecout << -1 << endl;}return 0;}
0 0
- HDU--2066[一个人的旅行] Dijkstra
- HDU 2066 一个人的旅行 Dijkstra
- HDU 2066 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(dijkstra特殊)
- hdu 2066 一个人的旅行(裸dijkstra)
- HDU 2066 一个人的旅行(Dijkstra)
- HDU - 2066 一个人的旅行 (Dijkstra)
- hdu 2066 一个人的旅行(Dijkstra)
- HDU 2066 一个人的旅行 【Dijkstra】
- HDU 2066--一个人的旅行【Dijkstra】
- HDU 2066 【Dijkstra】 一个人的旅行
- hdu 2066 一个人的旅行(dijkstra)
- hdu 2066 一个人的旅行 dijkstra
- hdu-2066-一个人的旅行(dijkstra)
- HDU 2066 一个人的旅行 dijkstra&&spfa
- HDU 2066 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(dijkstra)
- HDU 2066 一个人的旅行() (Dijkstra)
- Javascript模块化编程(三):require.js的用法
- 测试
- 直接双击启动tomcat中的startup.bat闪退原因及解决方法
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
- JAVA学习笔记(十一):enum的使用
- hdu 2066 一个人的旅行 dijkstra
- 【Python学习笔记】-自动发送邮件脚本
- JNI技术说明文档--利用NDKsample改造的简捷方法
- 关于@layout/~~布局时在java代码中失效的注意
- 测试
- IIS 上傳附件的限制
- [Win32] ToolHelp API 和 进程API 详解
- Qt 信号与槽研究:
- Git 初始化仓库及提交修改