tyvj1467 通向聚会的道路
背景
描述
输入格式
接下来m行,每行三个正整数u v s表示u到v的单向道路,路程为s,其中第i条道路的编号为i。
接着一个整数p1以及p1个正整数odd[i],表示编号为odd[i]的道路只会在走过奇数个区域时开启。
接着一个整数p2以及p2个正整数even[i],表示编号为even[i]的道路只会在走过偶数个区域时开启。
接下来一个正整数 t
紧接着t行,每行一个正整数h以及一个不超过10个字符长度的字符串na(且均有小写字母组成),表示在h区域居住着名字为na的人。
输出格式
第二行,该人到candy家的距离。
如果存在多解,则输入名字中字典序较小的一人。
测试样例1
输入
4 5
1 2 2
3 4 2
2 4 4
1 3 1
2 3 1
1 4
1 2
2
2 violethill
1 pink
输出
violethill
4
备注
Violethill尽管沿2—>3—>4距离为3,但因为3—>4这条道路只有在走过偶数个区域时才开启,当violethill从2到3时,只走了奇数个(1个)区域,道路不会开启。所以,violethill只好沿2—>4这条道路行走,距离为4,所以violethill比pink更快到candy家中,并且距离为4。
对于30%的数据 0<n<=100
对于100%的数据0<n<=10000 0<m<=100000
对于所有数据保证两区域间的距离<=100000
数据保证运算即结果在maxlongint以内
数据保证输入的正确性,即至少有一个人可以到达candy家中,并且一个区域最多只有一人,不会出现相同名字的人。
友情提示:可能出现有些道路既在odd中出现,也在even中出现。并且odd或者even中的数都可能出现重复数字。
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
#define ull unsigned long long
const int maxn=2e4+10,maxm=2e5+10;
const ull INF=-1;
int n,m;
int mu[maxm],mv[maxm];
ull ms[maxm],ans=INF;
bool modd[maxm],meven[maxm]; ull aa;char cc;
ull read() {
aa=0;cc=getchar();
while(cc<'0'||cc>'9') cc=getchar();
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
return aa;
} struct Pp{
int x;string s;
}pp[maxn]; bool cmp(const Pp &a,const Pp &b) {
return a.s<b.s;
} int fir[maxn],nxt[maxm],to[maxm],e=0;ull v[maxm];
void add(int y,int x,int z) {
to[++e]=y;nxt[e]=fir[x];fir[x]=e;v[e]=z;
} ull dis[maxn];
int zz[maxn];
bool vis[maxn];
void spfa(int st){
memset(dis,-1,sizeof(dis));
int s=1,t=0,x,y,z;
dis[st]=0;zz[++t]=st;vis[st]=1;
while(s<=t) {
x=zz[s%maxn];s++;vis[x]=0;
for(y=fir[x];y;y=nxt[y]) {
z=to[y];
if(dis[z]<=dis[x]||dis[z]<=dis[x]+v[y]) continue;
dis[z]=dis[x]+v[y];
if(!vis[z]) {
vis[z]=1;t++;
zz[t%maxn]=z;
}
}
}
} int main() {
n=read();m=read();
for(int i=1;i<=m;++i) {
mu[i]=read();mv[i]=read();
ms[i]=read();
}
int x=read(),y;
for(int i=1;i<=x;++i) {
y=read();modd[y]=1;
}
x=read();
for(int i=1;i<=x;++i) {
y=read();meven[y]=1;
}
for(int i=1;i<=m;++i) {
if(!modd[i]) add(mu[i],mv[i]+n,ms[i]);
if(!meven[i]) add(mu[i]+n,mv[i],ms[i]);
if(modd[i]&&meven[i]) {
add(mu[i]+n,mv[i],ms[i]);
add(mu[i],mv[i]+n,ms[i]);
}
}
add(n,2*n+1,0);add(2*n,2*n+1,0);
x=read();
for(int i=1;i<=x;++i) {
pp[i].x=read();
cin>>pp[i].s;
}
sort(pp+1,pp+x+1,cmp);
spfa(2*n+1);y=0;
for(int i=1;i<=x;++i) {
if(dis[pp[i].x]<ans) {
y=i;ans=dis[pp[i].x];
}
}
cout<<pp[y].s<<"\n";
cout<<ans;
return 0;
}
tyvj1467 通向聚会的道路的更多相关文章
- 【TYVJ】1467 - 通向聚会的道路(spfa+特殊的技巧)
http://tyvj.cn/Problem_Show.aspx?id=1467 这题我并不是看题解a的.但是确实从题解得到了启发. 一开始我就想到一个正解,设d[i][0]表示i开始走过奇数个点的最 ...
- [HNOI/AHOI2018]道路
Description: W 国的交通呈一棵树的形状.W 国一共有\(n - 1\)个城市和\(n\)个乡村,其中城市从\(1\)到\(n - 1\) 编号,乡村从\(1\)到\(n\)编号,且\(1 ...
- 【HNOI 2018】道路
Problem Description \(W\) 国的交通呈一棵树的形状.\(W\) 国一共有\(n - 1\)个城市和\(n\)个乡村,其中城市从\(1\)到\(n - 1\) 编号,乡村从\(1 ...
- [HNOI2018]道路 --- 树形DP
[HNOI2018]道路 题目描述: W 国的交通呈一棵树的形状.W 国一共有 \(n-1\) 个城市和 \(n\) 个乡村, 其中城市从 \(1\) 到 \(n-1\) 编号,乡村从 \(1\) 到 ...
- loj #2510. 「AHOI / HNOI2018」道路
#2510. 「AHOI / HNOI2018」道路 题目描述 W 国的交通呈一棵树的形状.W 国一共有 n−1 个城市和 nnn 个乡村,其中城市从 111 到 n−1 编号,乡村从 111 到 n ...
- [HNOI2018]道路(DP)
题目描述 W 国的交通呈一棵树的形状.W 国一共有n−1n - 1n−1 个城市和nnn 个乡村,其中城市从111 到n−1n - 1n−1 编号,乡村从111 到nnn 编号,且111 号城市是首都 ...
- [洛谷P4438] HNOI2018 道路
问题描述 W 国的交通呈一棵树的形状.W 国一共有n - 1个城市和n个乡村,其中城市从1到n - 1 编号,乡村从1到n编号,且1号城市是首都.道路都是单向的,本题中我们只考虑从乡村通往首都的道路网 ...
- [摘录]第三部分 IBM文化(2)
第二十二章 原则性领导 在一个组织程序已经变得不受其来源和内容的约束,而且其编纂出来的组织宗旨已经代替了个人责任的组织之中,你所面临的首要任务,就是要全盘抹掉这个程序本身,以便让整个封闭的系统呼吸新鲜 ...
- Java NIO:NIO概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题.NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题.本文下面分别从Java ...
随机推荐
- spring源码学习之AOP(一)
继续源码学习,看了spring中基础的容器和AOP感觉自己也没有什么长进,哈哈,我也不知道到底有用没有,这可能是培养自己的一种精神吧,不管那么多,继续学习!AOP中 AOP中几个重要的概念:(1)Ad ...
- PHP--Smarty的template模式
function change_year() { var ss = $('#select_year').children('option:selected').val(); $.ajax({ type ...
- 20190818 [ B ]-½
请看到这个蒟蒻博客的人注意一下. 这是简单的[ B ]场考试,如果需要[ A ]场题解请去神犇们的blog. [ B ]场不需要题解,恩? 太蒟蒻了QAQ 考试过程: 怀着我是蒟蒻我怕谁的心情. 首先 ...
- 区块链、云计算、大数据、人工智能、FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾
区块链.云计算.大数据.人工智能.FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾 | 作者 韩婷 发布于 2016年12月26日. 估计阅读时间: 不到一分钟 | 欲知区块链.VR.Te ...
- Birt设置导出格式和去掉多余按钮的方法
1.设置导出格式: webcontent>birt>pages>dialog>ExportReportDialogFragment.jsp页面: 找到for ( int i = ...
- Robbin负载均衡
Robbin是在Spring Cloud中的一个组件,是由Netfix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为.它给我们提供了默认的轮询.随机等负载均衡算法.同时也可以由我们定义自己的 ...
- JQ效果 透明图片覆盖动画
效果图呈上 先说思路 1,一个固定的框架,有两张图片,一张是狗狗的,一张是练习方式,想把做好的练习方式隐藏 2,效果上想要从下面滑动出来,所以透明框定位在下面 3,整理需要的东西,缓慢升起需要动画效果 ...
- Codefroces 213E. Two Permutations
E. Two Permutations time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Mysql的CMD操作
一.MySQL登录和退出——在CMD模式操作 l 语法格式:mysql.exe –h主机名 –u用户名 –p密码 l 参数说明: mysql.exe是mysql服务器的主应用程序. -h代 ...
- plotroc.m
function out1 = plotroc(varargin) %PLOTROC Plot receiver operating characteristic. % % <a href=&q ...