【POJ】3268 Silver Cow Party
2024-10-07 19:03:01
题目链接:http://poj.org/problem?id=3268
题意 :有N头奶牛,M条单向路。X奶牛开party,其他奶牛要去它那里。每头奶牛去完X那里还要返回。去回都是走的最短路。现在问这里面哪头奶牛走的路最长。
题解:对每个奶牛i与X做两次spfa。去回各一次。然后统计最长的。。板子稍微改一改//但是我还是T了好几发,因为初始化数组的时候maxn开大了。。QAQ。改小了就过了。
代码:
#include<iostream>
#include<stack>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn = ; vector< pair<int,int> > e[maxn]; int n,m,X;
int d[maxn],inq[maxn]; int spfa(int s,int t){
for(int i = ;i < maxn ; i++)
inq[i] = ;
for(int i = ; i < maxn ; i++)
d[i] = 1e9;
queue<int>Q;
Q.push(s);d[s] = ;inq[s] = ;
while( !Q.empty() ){
int now = Q.front();
Q.pop();
inq[now] = ;
for(int i = ; i < e[now].size() ; i++){
int v = e[now][i].first;
if(d[v] > d[now] + e[now][i].second){
d[v] = d[now] + e[now][i].second;
if(inq[v] == )
continue;
inq[v] = ;
Q.push(v);
}
}
}
return d[t];
} int main() {
scanf("%d%d%d",&n,&m,&X);
int x,y,z;
for(int i = ; i < m ;i++){
scanf("%d%d%d",&x,&y,&z);
//cin>>x>>y>>z;
e[x].push_back(make_pair(y,z));
//e[y].push_back(make_pair(x,z));
} int ans = ;
for(int i = ;i <= n ;i++){
if(i == X){
continue;
}
int sum = spfa(X,i);
sum += spfa(i,X);
ans = max(ans,sum);
}
cout<<ans<<endl; return ;
}
最新文章
- 【代码笔记】iOS-自定义弹出框
- 161223、mysql锁的两个例子
- 获取数据库里面最新的ID
- ECshop设置301最快捷最简单的方法
- webapp开发之需要知道的css细节
- 「C语言」文件的概念与简单数据流的读写函数
- C#注册表操作,根据键取值
- 1-Highcharts 3D图之普通3D柱状图与带空值
- ThinkPHP 关联模型(二十)
- Linux程序设计综合训练之简易Web服务器
- K-means 算法
- Sharding-JDBC
- vue 项目中添加阿里巴巴矢量图
- python自动化系列
- Vim+Ctags+Cscope安装
- ie8,9不支持indexOf解决办法,纯拷贝
- 了解java虚拟机—串行回收器(6)
- SQL集合运算
- Prism 4 文档 ---第5章 实现MVVM模式
- RT-Thread Nano移植
热门文章
- 一:unittest框架配合selenium工具之CSS_selector定位。
- 关于“Unknown or unsupported command &#39;install&#39;”问题解决的小结
- chromedriver安装(谷歌浏览器驱动安装)
- MAC OpenGL 环境搭建
- Java学习之集合(List接口)
- 高级Java必看的10本书
- ES6数组Api扩充
- .Net平台调用の初识
- 2018-2-13-win10-uwp-如何拖动一个TextBlock的文字到另一个TextBlock-
- python 生成推导式