hdoj3790_最短路径问题(最短路径)
来源:互联网 发布:知乎 理财平台 编辑:程序博客网 时间:2024/05/21 13:22
#include<cstdio>#include<iostream>#include<vector>#include<string.h>using namespace std;struct edge{ int npos, dis, cost;};vector<edge> edges[2010];pair<int, int> res[2010];bool used[2010];void kruskal(int s, int t,int n){ memset(used, false, sizeof(used)); used[s] = true; fill(res, res + 2010, make_pair(999999,999999)); for (int i = 0; i < edges[s].size(); i++) if( (res[edges[s][i].npos].first > edges[s][i].dis) || (res[edges[s][i].npos].first == edges[s][i].dis)&&(res[edges[s][i].npos].second>edges[s][i].cost)) { res[edges[s][i].npos].first = edges[s][i].dis; res[edges[s][i].npos].second = edges[s][i].cost; } while (1) { int npos, tdis= 999999, tcost = 999999; for (int i = 0; i < n;i++) if (!used[i]) if ((res[i].first < tdis) || (res[i].first == tdis) && (res[i].second < tcost)) { npos = i; tdis = res[i].first; tcost = res[i].second; } if (npos == t) { printf("%d %d\n", tdis, tcost); return; } used[npos] = true; for (int i = 0; i < edges[npos].size(); i++) { int tpos = edges[npos][i].npos; if (!used[tpos]) if ((res[tpos].first > tdis + edges[npos][i].dis) || (res[tpos].first == tdis + edges[npos][i].dis) && (res[tpos].second > tcost + edges[npos][i].cost)) { res[tpos].first = tdis + edges[npos][i].dis; res[tpos].second = tcost + edges[npos][i].cost; } } }}int main(){ int n, m; while (scanf("%d %d",&n,&m)&&n) { for (int i = 0; i < n; i++) edges[i].clear(); for (int i = 0; i < m; i++) { int a, b, d, p; scanf("%d %d %d %d", &a, &b, &d, &p); edges[a - 1].push_back(edge{b-1,d,p}); edges[b - 1].push_back(edge{a-1,d,p}); } int s, t; scanf("%d %d", &s, &t); kruskal(s-1,t-1,n); } return 0;}
0 0
- hdoj3790_最短路径问题(最短路径)
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- Android多线程编程之二:Thread+UI.Post(new Runnable(){})
- matlab 图像分割
- 函数实现my_memcmp
- C++指针详解/理解c和c++的复杂类型声明
- SharedPreferences 文件 保存失败
- hdoj3790_最短路径问题(最短路径)
- requestWindowFeature使用
- android异常“android.view.InflateException: Binary XML file line # : Error inflating class”
- 地摊的真正意义与前途
- gitbash里面无法复制
- Android多线程编程之三:AsyncTask
- 为什么链表操作过程中对于结构体指针,都要用malloc来开辟内存空间
- 树状分类结构,数据库构建(预排序历遍算法)
- kmp 学习 hihocoder #1015