hdu 1535 Invitation Cards (最短路径)
Invitation Cards
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1588 Accepted Submission(s): 714
The transport system is very special: all lines are unidirectional and connect exactly two stops. Buses leave the originating stop with passangers each half an hour. After reaching the destination stop they return empty to the originating stop, where they wait until the next full half an hour, e.g. X:00 or X:30, where 'X' denotes the hour. The fee for transport between two stops is given by special tables and is payable on the spot. The lines are planned in such a way, that each round trip (i.e. a journey starting and finishing at the same stop) passes through a Central Checkpoint Stop (CCS) where each passenger has to pass a thorough check including body scan.
All the ACM student members leave the CCS each morning. Each volunteer is to move to one predetermined stop to invite passengers. There are as many volunteers as stops. At the end of the day, all students travel back to CCS. You are to write a computer program that helps ACM to minimize the amount of money to pay every day for the transport of their employees.
2 2
1 2 13
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50
210
//1125MS 41076K 1434 B G++
/* 其实开始让我做我是拒绝的,不能叫我做我马上做,我得先试一下。不然加了特效搞得好像很容易那样,结果群众却做不出来,
我会被批的。 题意:
有编号1~P个点,有Q条单向路,求 1到其他P-1个点 + 其他P-1个点到1 的最短路线 最短路径:
首先数据比较大,用spfa比较靠谱。其实,第一个很明显以1为源点进行一次spfa就出来了,问题是第二个的求法,
首先遍历P-1个点是会TLE的,所以要转一下思维,就是逆向思维。把原来的路线全都反向再建图(即把u->v变成v->u),
在来一次源点为1的spfa就得出解了。 */
#include<iostream>
#include<vector>
#include<queue>
#define N 1000005
#define inf 0x7ffffff
using namespace std;
struct node{
int v,w;
node(int a,int b){
v=a;w=b;
}
};
vector<node>V[N];
int d[N];
int vis[N];
int p,q;
int a[N],b[N],w[N]; //记录路线信息
void spfa(int s) //spfa模板
{
for(int i=;i<=p;i++) d[i]=inf;
memset(vis,,sizeof(vis));
queue<int>Q;
Q.push(s);
d[s]=;
while(!Q.empty()){
int u=Q.front();
Q.pop();
vis[u]=;
int n0=V[u].size();
for(int i=;i<n0;i++){
int v=V[u][i].v;
int w=V[u][i].w;
if(d[v]>d[u]+w){
d[v]=d[u]+w;
if(!vis[v]){
Q.push(v);
vis[v]=;
}
}
}
}
}
int main(void)
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&p,&q);
for(int i=;i<=p;i++) V[i].clear();
int ans=;
for(int i=;i<q;i++){ //正向建图
scanf("%d%d%d",&a[i],&b[i],&w[i]);
V[a[i]].push_back(node(b[i],w[i]));
}
spfa();
for(int i=;i<=p;i++) ans+=d[i];
for(int i=;i<=p;i++) V[i].clear();
for(int i=;i<q;i++) //反向建图
V[b[i]].push_back(node(a[i],w[i]));
spfa();
for(int i=;i<=p;i++) ans+=d[i];
printf("%d\n",ans);
}
return ;
}
hdu 1535 Invitation Cards (最短路径)的更多相关文章
- HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1535 Problem Description In the age of television, n ...
- HDU 1535 Invitation Cards(最短路 spfa)
题目链接: 传送门 Invitation Cards Time Limit: 5000MS Memory Limit: 32768 K Description In the age of te ...
- HDU 1535 Invitation Cards (POJ 1511)
两次SPFA. 求 来 和 回 的最短路之和. 用Dijkstra+邻接矩阵确实好写+方便交换.可是这个有1000000个点.矩阵开不了. d1[]为 1~N 的最短路. 将全部边的 邻点 交换. d ...
- hdu 1535 Invitation Cards(SPFA)
Invitation Cards Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65536/65536K (Java/Other) T ...
- HDU 1535 Invitation Cards (最短路)
题目链接 Problem Description In the age of television, not many people attend theater performances. Anti ...
- HDU - 1535 Invitation Cards 前向星SPFA
Invitation Cards In the age of television, not many people attend theater performances. Antique Come ...
- hdu 1535 Invitation Cards(spfa)
Invitation Cards Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- hdu 1535 Invitation Cards
http://acm.hdu.edu.cn/showproblem.php?pid=1535 这道题两遍spfa,第一遍sfpa之后,重新建图,所有的边逆向建边,再一次spfa就可以了. #inclu ...
- [HDU 1535]Invitation Cards[SPFA反向思维]
题意: (欧洲人自己写的题面就是不一样啊...各种吐槽...果断还是看晕了) 有向图, 有个源叫CCS, 求从CCS到其他所有点的最短路之和, 以及从其他所有点到CCS的最短路之和. 思路: 返回的时 ...
随机推荐
- Windows/Linux下查看系统CPU使用最高的线程
参考:https://blog.csdn.net/qq_27818157/article/details/78688580 jstack -l 31372 > c:/31372.stack
- 你的 maven 如何使用
maven把你从痛苦的找包中解脱,让你感觉如此神奇,也让你的项目能够如此之小--功能一 依赖管理 (pom.xml 项目对象模型配置文件) 没有对比就没有伤害 maven让你可以随意增加删除项目的功 ...
- jquery操作DOM 元素(3)
.detach() 从DOM 中去掉所匹配的元素. .detach([selector]) selector 一个选择表达式将需要移除的从匹配的元素中过滤出来. $("p").de ...
- 使用winsw将spring-boot jar包注册成windows服务
背景:最近的项目中使用spring-boot, https://github.com/kohsuke/winsw/releases <service> <id>YJPSS< ...
- angularjs处理多个$http
本文引自:https://www.cnblogs.com/xiaojikuaipao/p/6017899.html 在实际业务中经常需要等待几个请求完成后再进行下一步操作.但angularjs中$ht ...
- ES6笔记01-声明变量
ES6只有六种声明变量的方法:var命令和function命令,let和const命令,import命令和class命令.所以,ES6一共有6种声明变量的方法. const声明一个只读的常量.一旦声明 ...
- 一个简单的WPF MVVM实例【转载】
引用地址:http://blog.csdn.net/yl2isoft/article/details/20838149 1 新建WPF 应用程序WPFMVVMExample 程序结构如下图所示. 2 ...
- python中全局变量和局部变量
例1: a = 100 #定义全局变量a def test1(): print(a) #此处a为全局变量 def test2(a):#此处a为局部变量 print(a)#此处a为局部变量 test1( ...
- VIM安装YCM插件
折腾了两天,终于好了 1.配置VIM (1)下载相关插件 sudo apt-get install git sudo apt-get install build-essential cmake sud ...
- requests--etree--xpath
# -*- coding: cp936 -*- import requests from lxml import etree url = 'https://weibo.cn/pub/' html = ...