hdoj 2066 一个人的旅行 【多源多汇最短路】
方法:缩点 + 最短路
分析:看了大神的一篇博客,讲冗余压缩的,然后就想找一个多源最短路练练手。
这个题目就是典型的多源多汇最短路
方法:把全部的源点压缩成一个点,然后汇点压缩成一个点,然后跑最短路
注意:
1:求最短路的时候邻接表存储有重边不影响结果。
2:此题有重边。
3:要特殊处理源点和汇点是同一个点的情况。为0
AC代码:
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 1050;
int mp[N][N];
map<int,int> ma;
struct Node
{
int to,val;
};
vector<Node> v[N];
void add_Node(int x,int y,int z)
{
v[x].push_back((Node){y,z});
v[y].push_back((Node){x,z});
} int dis[N];
bool ok[N];
void spfa(int s)
{
queue<int> q;
q.push(s);
memset(dis,inf,sizeof(dis));
dis[s]=0;
while(!q.empty())
{
int tmp=q.front();
q.pop();
for(int i=0;i<v[tmp].size();i++)
{
if(dis[v[tmp][i].to]>dis[tmp]+v[tmp][i].val)
{
dis[v[tmp][i].to]=dis[tmp]+v[tmp][i].val;
q.push(v[tmp][i].to);
}
}
}
} void MP_clear(int n)
{
ma.clear();
for(int i=0;i<=n;i++)
v[i].clear();
}
int main()
{
int t,s,d;
while(~scanf("%d%d%d",&t,&s,&d))
{
memset(mp,inf,sizeof(mp));
int ma_x=0,ma_y=0;
for(int i=0;i<t;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
mp[x][y]=min(z,mp[x][y]);
ma_x=max(ma_x,x);
ma_y=max(ma_y,y);
}
memset(ok,0,sizeof(ok));
int ss=max(ma_x,ma_y)+2,tt=max(ma_x,ma_y)+1;
for(int i=0;i<s;i++)
{
int x;scanf("%d",&x);
ma[x]=ss;
ok[x]=1;
}
int ff=0;
for(int i=0;i<d;i++)
{
int x;
scanf("%d",&x);
ma[x]=tt;
if(ok[x] && ff==0)
ff=1;
}
if(ff==1)
{
printf("0\n");
continue;
}
for(int i=1;i<=ma_x;i++)
{
for(int j=1;j<=ma_y;j++)
{
if(mp[i][j]!=inf)
{
int xx=i,yy=j;
if(ma[i])
xx=ma[i];
if(ma[j])
yy=ma[j];
add_Node(xx,yy,mp[i][j]);
}
}
}
spfa(ss);
printf("%d\n",dis[tt]);
MP_clear(ss);
}
return 0;
}
hdoj 2066 一个人的旅行 【多源多汇最短路】的更多相关文章
- Vijos 1006 晴天小猪历险记之Hill 单源单汇最短路
背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...
- hdoj 2066 一个人的旅行
Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...
- POJ1511 Invitation Cards(多源单汇最短路)
边取反,从汇点跑单源最短路即可. #include<cstdio> #include<cstring> #include<queue> #include<al ...
- 湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路
1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...
- 2015南阳CCPC F - The Battle of Guandu 多源多汇最短路
The Battle of Guandu Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description In the year of 200, t ...
- hdu 2066 一个人的旅行
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷 ...
- poj1459 Power Network (多源多汇最大流)
Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...
- 2018.07.06 POJ 1459 Power Network(多源多汇最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Description A power network consists of nodes ...
- poj2112 二分+floyd+多源多汇最大流
/*此题不错,大致题意:c头牛去k个机器处喝奶,每个喝奶处最多容纳M头牛,求所有牛中走的最长路的 那头牛,使该最长路最小.思路:最大最小问题,第一灵感:二分答案check之.对于使最长路最短, 用fo ...
随机推荐
- Week5(10月11日):国庆后补课的复杂心情
Part I:提问 =========================== 1.说说你所知道的强类型视图HTML扩展方法. 2.请解释代码. @Html.ActionLink("链接文字& ...
- Struts 2 OGNL
1.什么是OGNL? 2.Struts 2 OGNL 表达式 ====================== 华丽丽的分割线 ====================== 1.什么是OG ...
- python模块 mysql-python安装(在ubuntu系统下)
直接运行如下命令 sudo pip install MySQL-python 报如下错误 xxx@ubuntu:~$ sudo pip install MySQL-python Downloading ...
- linux查看端口和进程
查看进程 ps -aux | grep appname 杀死进程 kill pid 查看端口: netstat -ap | grep 端口号 netstat -ap | grep 进程名字 lsof ...
- 输入输出函数 I/O函数之perror()
perror()函数的函数原型 void perror(char const *message); 它会将message信息输出出来,后面再加上错误原因字符串. 下面是来自百度百科的实例: #incl ...
- 架构漫谈:UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...
- solr4.x设置默认查询字段
1.如果需要同时在title和content中进行查询,可以添加如下字段: <field name="title_content" type="textComple ...
- ImageMagick 压缩图片 方法
Images as a percentage of page weight for the Alexa top 10 global web sites 图片在站点所占的比重越来越重.更好的优化图片能 ...
- Leetcode 线性表 Swap Nodes in Pairs
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Swap Nodes in Pairs Total Accepted: 12511 Tota ...
- IOS学习之segmented control
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27086877 作者:小马 什么是segmented control? 先上几张图: ...