poj 3268 Silver Cow Party
来源:互联网 发布:股票收益率数据怎么找 编辑:程序博客网 时间:2024/04/30 15:36
题意:求一点到某一点的最短距离和回来的最短距离之和中的最大值。
思路:对出边和入边构造的图分别求一次最短路径,两次dist数组相加,取最大值。
代码:
#include <iostream>#include <vector>#include <queue>using namespace std;const int inf = 1000000000;const int maxn = 1005;const int maxm = 1000005;struct node{int v;int w;node(int _v, int _w){v = _v; w = _w;}};struct arc{int u,v;int w;};int n,m,x;int dist[maxn];//记录单源最短路径 int ans[maxn];//存储结果 bool inq[maxn];//判断节点是否入队 arc a[maxm];//存储边 vector<node> list[maxn];//邻接链表 queue<int> q;void Input(){for(int i = 0; i < m; i++){cin>>a[i].u>>a[i].v>>a[i].w;}}void spfa(int s){for(int i = 1; i <= n; i++){dist[i] = inf;inq[i] = false;}dist[s] = 0;q.push(s);while(!q.empty()){int u = q.front(); q.pop();inq[u] = false;for(int i = 0; i < list[u].size(); i++){int v = list[u][i].v;if(dist[u] + list[u][i].w < dist[v]){dist[v] = dist[u] + list[u][i].w;if(!inq[v]) {q.push(v); inq[v] = true;}}}}}void Solve(){int maximum = -inf;int sum = 0;for(int i = 1; i <= n; i++) ans[i] = 0;//求所有点到x的最短距离 for(int i = 1; i <= n; i++) list[i].clear();for(int i = 0; i < m; i++) list[a[i].v].push_back(node(a[i].u,a[i].w));spfa(x);for(int i = 1; i <= n; i++) ans[i] += dist[i];//求x到所有点的最短距离 for(int i = 1; i <= n; i++) list[i].clear();for(int i = 0; i < m; i++) list[a[i].u].push_back(node(a[i].v,a[i].w));spfa(x);for(int i = 1; i <= n; i++) ans[i] += dist[i];//找到最大值 for(int i = 1; i <= n; i++)if(ans[i] > maximum) maximum = ans[i];cout<<maximum<<"\n";}int main(){while(cin>>n>>m>>x){Input();Solve();}return 0;}
0 0
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268--Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- 04-0. 求符合给定条件的整数集
- 最短路径—Dijkstra算法
- 【 题集 】 寒假计划——DP(入门)
- UINavigationController点击View隐藏与显示
- 小米支付SDK接入注意事项
- poj 3268 Silver Cow Party
- C知识回顾(《C程序设计语言 The C Programming Language》)
- POJ 1195 Mobile phones (二维树状数组)
- Wc2015……酱油记?
- UVA - 607 Scheduling Lectures(贪心+记忆化搜索)
- 一些对winform(C#)的学习(解决小问题)有帮助的网址
- oc 类扩展
- Visual C++ Tips: warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated
- unity3d 加载和内存管理机制之二:进一步深入和细节