DIJK,最短路,建两个图就好了。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
using namespace std; const int N = ;
const int inf = 0x3f3f3f3f;
int n, m, D1, D2, A, B;
vector<string>vs[];
int mp1[N][N];
int mp2[N][N]; void conn(int mp[][N], const string & s, int val) {
int t = ;
vector<int>vt;
for (int i = ; i < s.length(); ++i) {
if (s[i] != '+') t = t * + s[i] - '';
else {
vt.push_back(t);
t = ;
}
}
vt.push_back(t);
for (int i = ; i < (int)vt.size(); ++i) {
for (int j = i+; j < (int)vt.size(); ++j) {
mp[vt[i]][vt[j]] = min(mp[vt[i]][vt[j]], val*(j-i));
}
}
} int dis[N];
char vis[N]; int dijkstra(int mp[][N]) {
memset(dis, 0x3f, sizeof (dis));
memset(vis, , sizeof (vis));
dis[A] = ;
for (int i = ; i < n; ++i) {
int Min = inf, p;
for (int j = ; j <= n; ++j) {
if (!vis[j] && Min > dis[j]) {
Min = dis[j];
p = j;
}
}
if (p == B) break;
vis[p] = ;
for (int j = ; j <= n; ++j) {
if (!vis[j] && dis[p]+mp[p][j] < dis[j]) {
dis[j] = dis[p] + mp[p][j];
}
}
}
return dis[B];
} void solve() {
memset(mp1, 0x3f, sizeof (mp1));
memset(mp2, 0x3f, sizeof (mp2));
for (int i = ; i < (int)vs[].size(); ++i) {
conn(mp1, vs[][i], D1);
}
for (int i = ; i < (int)vs[].size(); ++i) {
conn(mp1, vs[][i], D1);
conn(mp2, vs[][i], D2);
}
int ans = min(dijkstra(mp1), dijkstra(mp2));
printf(ans == inf ? "-1\n" : "%d\n", ans);
} int main() {
int T, k;
char str[];
scanf("%d", &T);
while (T--) {
vs[].clear();
vs[].clear();
scanf("%d %d", &n, &m);
for (int i = ; i < m; ++i) {
scanf("%s %d", str, &k);
if (k == ) vs[].push_back(str);
else vs[].push_back(str);
}
scanf("%d %d %d %d", &D1, &D2, &A, &B);
solve();
}
return ;
}

HDU 4522的更多相关文章

  1. HDU 4522 (恶心建图)

    湫湫系列故事——过年回家 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  2. hdu 4522(图论,构图)

    湫湫系列故事——过年回家 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  3. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  5. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  6. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  7. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  8. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  9. hdu 4481 Time travel(高斯求期望)(转)

    (转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...

随机推荐

  1. Tornado异步模式

    先介绍下背景:由于工作需要,前段时间又写了一段爬虫去获取和更新一些数据.之前爬虫主要用Scrapy框架批量爬取一些页面数据,或者用Gevent调用目标站点的接口.偶然看到了Tornado,听说这个框架 ...

  2. JS判断数组是否包含某元素

    我在学习ES6数组拓展时,发现了新增了不少了有趣的数组方法,突然想好工作中判断数组是否包含某个元素是非常常见的操作,那么这篇文章顺便做个整理. 1.for循环结合break 可能很多人第一会想到for ...

  3. mybatis多个参数查询问题

    一.话不多数,错误如下 Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException ...

  4. 【USACO2002 Feb】奶牛自行车队

    [USACO2002 Feb]奶牛自行车队 Time Limit: 1000 ms Memory Limit: 131072 KBytes Description N 头奶牛组队参加自行车赛.车队在比 ...

  5. Java保存错误日志信息

    我们平时在撸代码的时候,有时候需要将某个代码块的具体错误信息保存到数据库或文件中,以便日后方便快速的查找问题. 使用e.printStackTrace(),我们可以将信息保存在具体的变量中,然后写入数 ...

  6. iOS - UITableView 多选功能实现

    :自定义Cell中的代码 #import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property(nonatomic ...

  7. ionic2 打包时报错 file-opener2

    在app自动更新过程中,有用到ionic-native插件:cordova-plugin-file-openner2    添加插件后,打包时有错: FAILURE: Build failed wit ...

  8. redis集群——RPLR简笔(Redis+PostgreSQL+Linux(centos7)+RabbitMQ)

    使用的是centos7. 1.下载最新redis源码,解压(2016-05-12最新版本为3.2.0,3.0及以上才有官方集群) 2.进入源码根目录(此目录下的redis-stable目录),找到ut ...

  9. 【译】x86程序员手册08 -2.6中断和异常

    2.6 Interrupts and Exceptions 中断和异常 The 80386 has two mechanisms for interrupting program execution: ...

  10. R包

    查看默认安装包的位置 .libPaths() 移除包 remove.packages("package_name") 查看所有安装的包 library() 按 q 退出包列表   ...