HDU4522 湫湫系列故事——过年回家
传送门:点我
中文题面。
思路:拿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 湫湫系列故事——过年回家的更多相关文章
- HDU 4532 湫秋系列故事——安排座位 (组合+DP)
湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- HDU-4522 湫湫系列故事——过年回家 最短路
题意:很乱 分析:把数据处理下,dijkstra下就行了,floyd超时了,我还想着优化一下输入,因为使用了vector和string等等,但是计算数据规模后,处理输入的时间复杂度比floyd要低一个 ...
- HDU-4532 湫秋系列故事——安排座位 组合数学DP
题意:有来自n个专业的学生,每个专业分别有ai个同学,现在要将这些学生排成一行,使得相邻的两个学生来自不同的专业,问有多少种不同的安排方案. 分析:首先将所有专业的学生视作一样的,最后再乘以各自学生的 ...
- [HDU4532]湫秋系列故事——安排座位
题面在这里 description 有\(n\)种颜色的小球,每种颜色的小球有\(a_i\)个: 要把它们摆成一排,求相邻小球颜色不相同的摆放方案数. 任意两个合理的安排方法,只要有一个位置的同学不同 ...
- HDUOJ----4509湫湫系列故事——减肥记II
湫湫系列故事——减肥记II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- 完全背包问题:湫湫系列故事――减肥记I(HDU 4508)
湫湫系列故事――减肥记I HDU 4508 一道裸的完全背包 #include<iostream> #include<algorithm> #include<stdio ...
- hdu4508 完全背包,湫湫系列故事——减肥记I
湫湫系列故事——减肥记I 对于01背包和完全背包,昨晚快睡着的时候,突然就来了灵感 区别:dp[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值 在第二重循环,01 是倒着循环的,因 ...
- hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- Hdu 4514 湫湫系列故事——设计风景线
湫湫系列故事--设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
随机推荐
- idea 添加 VUE 的语法支持和开发
<一>VUE的开发分两种,一种是直接在HTML文件中使用,一种是VUE文件的形式开发 1,首先我们先让 HTML 文件支持 VUE 的语法指令提示 2,File -> Setting ...
- JS 函数(arguments、箭头函数、bind)
参数 函数内部可用的 arguments 对象来访问函数的实参 注意 在函数递归调用的时候(在某一刻同一个函数运行了多次,也就是有多套实参),那么 arguments 属性的值是最近一次该函数调用时传 ...
- gulp 添加版本号 解决浏览器缓存问题
分别安装gulp-rev.gulp-rev-collerctor.gulp-asset-rev,安装了的略过 npm install gulp-rev --save-dev npm install g ...
- centos如何安装tomcat
1 通过 SecureCRT 连接到阿里云 CentOS7 服务器; 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 /usr/local/tools,如果有 ...
- day25-面向对象结构与成员
1.面向对象结构分析 如下面的图所示:面向对象整体大致分两块区域: 每个大区域又可以分为多个小部分: class A: name = 'Tom' # 静态变量(静态字段) __iphone = '13 ...
- Leetcode 题解 Jump Game
一,笨方法 o(n^2).果然看完别人的解法就自惭形秽啊!! 我用的动态规划方法. 比如输入 i: 0 1 2 3 4 ———————————————— a[i]: 2 3 1 0 4 直接利用原来 ...
- Oracle保留两位小数的函数
1.最终保存成字符串类型 使用to_char()函数 // 其9代表:如果存在数字则显示数字,不存在则显示空格 // 其0代表:如果存在数字则显示数字,不存在则显示0,即占位符 // 其FM代表:删除 ...
- Netty - 1
Netty设计特点: 1. io线程模型 使用reactor模式,同步非阻塞.这决定了可以用最少的资源做更多的事. 2. 内存零拷贝 使用直接缓存 3. 内存池设计 申请的内存可以重用,主要指直接内存 ...
- ConcurrentModificationException原因及排除
如何产生,一边遍历一边修改元素,产生iter后再修改原结构,如下,无论是for中或iter都会产生ConcurrentModificationException import java.util.Ar ...
- es6初级之解构----之一
1. 访问对象属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...