刷题——Silver Cow Party POJ
来源:互联网 发布:有道英语翻译软件下载 编辑:程序博客网 时间:2024/05/16 20:27
/*
n个点,m条有向边,起点为x,问从其他点到x点,再从x点回去的最小路径的最大值
正向单源最短路,反向单源最短路
*/
#include <stdio.h>
#include <vector>
using namespace std;
#define MAX 1e9
#define min(a,b) a>b?b:a
struct node{int to,cost;};
vector<node>G[1005];
vector<node>rG[1005];
int d[1005];
int rd[1005];
bool use[1005];
bool ruse[1005];
int n,m,x;
void short_path(){
for(int i=1;i<=n;i++){
d[i]=MAX;
use[i]=false;
rd[i]=MAX;
ruse[i]=false;
}
d[x]=0;
rd[x]=0;
while(true){
int v=-1,sp=MAX,rv=-1,rsp=MAX;
for(int i=1;i<=n;i++){
if(!use[i]&&sp>d[i]){
sp=d[i];
v=i;
}
if(!ruse[i]&&rsp>rd[i]){
rsp=rd[i];
rv=i;
}
}
if(v==-1&&rv==-1){
break;
}
if(v!=-1){
use[v]=true;
for(int i=0;i<G[v].size();i++){
node a=G[v][i];
d[a.to]=min(d[a.to],d[v]+a.cost);
}
}
if(rv!=-1){
ruse[rv]=true;
for(int i=0;i<rG[rv].size();i++){
node a=rG[rv][i];
rd[a.to]=min(rd[a.to],rd[rv]+a.cost);
}
}
}
}
int main(){
while(~scanf("%d %d %d",&n,&m,&x)){
for(int i=1;i<=n;i++){
G[i].clear();
rG[i].clear();
}
int a,b,t;
for(int i=0;i<m;i++){
scanf("%d %d %d",&a,&b,&t);
G[a].push_back(node{b,t});
rG[b].push_back(node{a,t});
}
short_path();
int max=0;
for(int i=1;i<=n;i++){
if((d[i]+rd[i])>max){
max=d[i]+rd[i];
}
}
printf("%d\n",max);
}
return 0;
}
n个点,m条有向边,起点为x,问从其他点到x点,再从x点回去的最小路径的最大值
正向单源最短路,反向单源最短路
*/
#include <stdio.h>
#include <vector>
using namespace std;
#define MAX 1e9
#define min(a,b) a>b?b:a
struct node{int to,cost;};
vector<node>G[1005];
vector<node>rG[1005];
int d[1005];
int rd[1005];
bool use[1005];
bool ruse[1005];
int n,m,x;
void short_path(){
for(int i=1;i<=n;i++){
d[i]=MAX;
use[i]=false;
rd[i]=MAX;
ruse[i]=false;
}
d[x]=0;
rd[x]=0;
while(true){
int v=-1,sp=MAX,rv=-1,rsp=MAX;
for(int i=1;i<=n;i++){
if(!use[i]&&sp>d[i]){
sp=d[i];
v=i;
}
if(!ruse[i]&&rsp>rd[i]){
rsp=rd[i];
rv=i;
}
}
if(v==-1&&rv==-1){
break;
}
if(v!=-1){
use[v]=true;
for(int i=0;i<G[v].size();i++){
node a=G[v][i];
d[a.to]=min(d[a.to],d[v]+a.cost);
}
}
if(rv!=-1){
ruse[rv]=true;
for(int i=0;i<rG[rv].size();i++){
node a=rG[rv][i];
rd[a.to]=min(rd[a.to],rd[rv]+a.cost);
}
}
}
}
int main(){
while(~scanf("%d %d %d",&n,&m,&x)){
for(int i=1;i<=n;i++){
G[i].clear();
rG[i].clear();
}
int a,b,t;
for(int i=0;i<m;i++){
scanf("%d %d %d",&a,&b,&t);
G[a].push_back(node{b,t});
rG[b].push_back(node{a,t});
}
short_path();
int max=0;
for(int i=1;i<=n;i++){
if((d[i]+rd[i])>max){
max=d[i]+rd[i];
}
}
printf("%d\n",max);
}
return 0;
}
阅读全文
0 0
- 刷题——Silver Cow Party POJ
- poj Silver Cow Party
- poj Silver Cow Party
- Silver Cow Party POJ
- Silver Cow Party POJ
- Silver Cow Party POJ
- Silver Cow Party POJ
- POJ Silver Cow Party
- Silver Cow Party POJ
- Silver Cow Party POJ
- POJ3268—Silver Cow Party
- POJ3268—Silver Cow Party
- POJ 3268 Silver Cow Party——dijkstra
- 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
- 项目中引入log4j
- 【JavaWeb】0810-0811 Servlet
- Python笔记(二)——高级特性|函数式编程
- c3p0连接数据库 out of memery
- JAVA MD5加密算法
- 刷题——Silver Cow Party POJ
- QT在QLabel 或QPushButton等插入图片
- ns2多接口扩展错误调试
- redis常用工具介绍
- Netty源码解读(三)Channel与Pipeline
- 感知机 @ Python
- 虚函数的好处
- 剑指offer--->顺时针打印矩阵
- Android Fragment 完全解析(上)