传送门:点我

中文题面。

思路:拿spfa对卧铺和硬铺分别跑spfa,然后找两个的最短路。体感堆优化的dij也可以,不过spfa跑跑就过去了。有个细节是最后得用long long 存数据,其他的没啥。

去重边是拿set存的邻接表。判断是否是数字用的isdigit函数。懒的要命系列。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <bitset> using namespace std;
#define LL long long
#define pb push_back
#define mk make_pair
#define pill pair<int, int>
#define mst(a, b) memset(a, b, sizeof a)
#define REP(i, x, n) for(int i = x; i <= n; ++i)
int vis[],dis[],n,m;
set<int>v1[];
set<int>v2[];
void spfa(int st,int key){
queue<int>q;
memset(vis,,sizeof(vis));
for(int i = ; i <= n ; i++){
dis[i] = ;
}
q.push(st);
vis[st] = ;
dis[st] = ;
while(!q.empty()){
int v = q.front();
vis[v] = ;
q.pop();
if(key == ){
set<int>::iterator it = v1[v].begin();
for(;it != v1[v].end(); it++){
int to = *it;
if(dis[to] > dis[v] + ){
dis[to] = dis[v] + ;
if(!vis[to]){
q.push(to);
vis[to] = ;
}
}
}
}
else{
set<int>::iterator it = v2[v].begin();
for(;it != v2[v].end(); it++){
int to = *it;
if(dis[to] > dis[v] + ){
dis[to] = dis[v] + ;
if(!vis[to]){
q.push(to);
vis[to] = ;
}
}
}
}
}
}
int main(){
int t;
for(scanf("%d",&t);t--;){
char s[];
scanf("%d %d",&n,&m);
for(int i = ; i <= n ; i++){
v1[i].clear();
v2[i].clear();
}
while(m--){
int num;
scanf("%s %d",s,&num);
int k = , y = -;
int len = strlen(s);
for(int i = ; i < len ; i++){
if(isdigit(s[i])){
k = k * + (s[i] - '');
}
else{
if(y == -) y = k;
else{
v1[y].insert(k);
if(num > ){
v2[y].insert(k);
}
y = k;
}
k = ;
}
}
v1[y].insert(k);
if(num > ){
v2[y].insert(k);
}
}
long long ans1 = ,ans2 = ;
int d1,d2,st,ed;
scanf("%d %d %d %d",&d1,&d2,&st,&ed);
spfa(st,);
ans1 = dis[ed];
spfa(st,);
ans2 = dis[ed];
if(ans1 == && ans2 == ){
puts("-1");continue;
}
//printf("%d %d\n",ans1,ans2);
printf("%lld\n",min(ans1*d1*1LL,ans2*d2*1LL));
}
}

HDU4522 湫湫系列故事——过年回家的更多相关文章

  1. HDU 4532 湫秋系列故事——安排座位 (组合+DP)

    湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  2. HDU-4522 湫湫系列故事——过年回家 最短路

    题意:很乱 分析:把数据处理下,dijkstra下就行了,floyd超时了,我还想着优化一下输入,因为使用了vector和string等等,但是计算数据规模后,处理输入的时间复杂度比floyd要低一个 ...

  3. HDU-4532 湫秋系列故事——安排座位 组合数学DP

    题意:有来自n个专业的学生,每个专业分别有ai个同学,现在要将这些学生排成一行,使得相邻的两个学生来自不同的专业,问有多少种不同的安排方案. 分析:首先将所有专业的学生视作一样的,最后再乘以各自学生的 ...

  4. [HDU4532]湫秋系列故事——安排座位

    题面在这里 description 有\(n\)种颜色的小球,每种颜色的小球有\(a_i\)个: 要把它们摆成一排,求相邻小球颜色不相同的摆放方案数. 任意两个合理的安排方法,只要有一个位置的同学不同 ...

  5. HDUOJ----4509湫湫系列故事——减肥记II

    湫湫系列故事——减肥记II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  6. 完全背包问题:湫湫系列故事――减肥记I(HDU 4508)

    湫湫系列故事――减肥记I  HDU 4508 一道裸的完全背包 #include<iostream> #include<algorithm> #include<stdio ...

  7. hdu4508 完全背包,湫湫系列故事——减肥记I

    湫湫系列故事——减肥记I 对于01背包和完全背包,昨晚快睡着的时候,突然就来了灵感 区别:dp[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值 在第二重循环,01 是倒着循环的,因 ...

  8. hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)

    湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  9. Hdu 4514 湫湫系列故事——设计风景线

    湫湫系列故事--设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...

随机推荐

  1. java对象比较==和equals的区别

    转载:http://blog.csdn.net/bluesky_usc/article/details/51849125 1值比较 即内容相同,我们就认为是相等的.比如:int i=5:int j = ...

  2. Shell 编程(实例一)

    创建一个脚本 admin.sh 完成如下作用: -h | --help : 提供帮助信息 --add  Users : 完成用户添加 -del User | --delete : 完成用户删除 -v ...

  3. Linux中的Wheel组的作用

    原文:http://www.360doc.com/content/11/0505/10/4644186_114496525.shtml Linux中的Wheel组的作用(用自己的话翻译的) (原文) ...

  4. 机器学习入门-文本数据-构造Ngram词袋模型 1.CountVectorizer(ngram_range) 构建Ngram词袋模型

    函数说明: 1 CountVectorizer(ngram_range=(2, 2)) 进行字符串的前后组合,构造出新的词袋标签 参数说明:ngram_range=(2, 2) 表示选用2个词进行前后 ...

  5. iOS pods编译原理

    首先看一下Podfile文件下面这行 use_frameworks! 这行的意思是Pod工程中的target是否编译成framework的形式,加上这行Pod工程中的target会编译成framewo ...

  6. SQL 数据库开发一些精典的代码(转永南)

    1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: s ...

  7. 正则表达式(TypeScript, JavaScript)

    课题 使用正则表达式匹配字符串 使用正则表达式 "\d{3}-(\d{4})-\d{2}" 匹配字符串 "123-4567-89" 返回匹配结果:'" ...

  8. [Sphinx]全文索引Sphinx的使用配置

    -------------------------------------------------------------------------------------- 搜索分为两种: 1. 对结 ...

  9. hibernate criteria Restrictions工具类用法

    CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid); // 查询条件组装器 org.jeecgframework.core.ext ...

  10. sqlalchemy 学习-- 多表操作

    一对多:一对一 # one -- many class Students(Base): __tablename__ = "students" sid = Column(Intege ...