传送门:点我

中文题面。

思路:拿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. nginx 服务器常见配置以及负载均衡

    # 配置启动用户,用户权限不够会出现访问 403 的情况 user root; # 启动多少个工作进程 worker_processes 1; # 错误日志文件进程文件的保存地址 error_log ...

  2. 04.给linux用户添加sudo权限

    linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be r ...

  3. leetcode1012

    # given number n, see whether n has repeated number def has_repeated(n): str_n = str(n) return len(s ...

  4. list<T>中的按特定顺序排序

    前段时间有个任务,就是把参数要按特定顺序排序,就是要是在一张大的参数表中,只选取,2,5,12,9,13,10 这几个参数,并按上述顺序进行排序. 假设这个参数在一个类中.例如: 上述参数序列就存在P ...

  5. mysql explain预估剖析

    http://www.cnblogs.com/LBSer/p/3333881.html 引子: 使用MySQL建立了一张表country,总共有才3121行记录. 但是使用explain select ...

  6. 什么是 BULK INSERT

    MSDN的解释: 在 SQL Server 中以用户指定的格式将数据文件导入到数据库表或视图中. 语法: BULK INSERT [ database_name . [ schema_name ] . ...

  7. jq控制select值为某个时选中

    $("#selectche_type option").each(function(){//用id ,用class好像不得,不知道为何 alert(2) if($(this).va ...

  8. 昆虫之膜翅目(Hymenoptera)

    1.简介 膜翅目昆虫(sawflies, wasps, ants, and bees,叶蜂.黄蜂目.蚂蚁目和蜜蜂目)是四大种类繁多的昆虫目之一,包括15.3万多种已知昆虫,可能还有多达100万种尚未发现 ...

  9. R各种数据类型的转换

    1.列表转化为数据框 df <- data.frame(matrix(unlist(列表), nrow=132, byrow=T),stringsAsFactors=FALSE)

  10. Java的map键值对的用法,map的遍历,Entry对象的使用

    思路: 1.定义集合 2.存储数据 3.添加元素 4.遍历 4.1将需要遍历的集合的键封装到set集合中(这用到了entrySet方法,和Entry对象) 4.2声明迭代器或者用for增强循环 4.3 ...