题意与分析

这题也是傻逼题,可是我当时打比赛的时候板子出问题了- -|||,怎么调也调不过。

不过思路是很清晰的:先做n次dijkstra然后重新建图,建完了以后根据新的单向图再跑一次dijkstra。

代码

 #include <bits/stdc++.h>

 #define ZERO(x) memset(x, 0, sizeof(x))
using namespace std;
using ll=long long; struct Edge { int v, nxt; ll c; };
Edge w[];
vector<int> que;
ll dist[], a[], b[];
int e[][], ww[];
bool vis[];
int N, M, x, y, W = ; void ShortestPath(int s)
{
memset(dist, , sizeof(dist)); dist[s] = ;
ZERO(vis); vis[s]=true;
que.clear();
que.push_back(s);
for (int fi = ; fi < que.size(); ++ fi)
{
int u = que[fi];
for (int i = ww[u]; i; i = w[i].nxt)
{
int v = w[i].v;
if (dist[v] <= dist[u] + w[i].c) continue;
dist[v] = dist[u] + w[i].c;
if (vis[v]) continue;
vis[v] = true;
que.push_back(v);
}
vis[u] = false;
} e[s][] = ;
for (int i = ; i <= N; ++ i)
if (i != s && dist[i] <= a[s]) e[s][++ e[s][]] = i;
} int main()
{
cin >> N >> M;
cin >> x >> y;
for (int i = , u, v; i <= M; ++ i)
{
ll c;
cin >> u >> v >> c;
w[++ W].v = v; w[W].c = c; w[W].nxt = ww[u]; ww[u] = W;
w[++ W].v = u; w[W].c = c; w[W].nxt = ww[v]; ww[v] = W;
}
for (int i = ; i <= N; ++ i) cin >> a[i] >> b[i];
for (int i = ; i <= N; ++ i) ShortestPath(i); memset(dist, , sizeof(dist)); dist[x] = ;
ZERO(vis); vis[x]=true;
que.clear();
que.push_back(x);
for (int fi = ; fi < que.size(); ++ fi)
{
int u = que[fi];
for (int i = ; i <= e[u][]; ++ i)
{
int v = e[u][i];
if (dist[v] <= dist[u] + b[u]) continue;
dist[v] = dist[u] + b[u];
if (vis[v]) continue;
vis[v] = ;
que.push_back(v);
}
vis[u] = ;
} if (dist[y] > (1ll << )) dist[y] = -;
cout << dist[y] << endl; return ;
}

点我看时雨色图

【日常训练】Volleyball(CodeForces-96D)的更多相关文章

  1. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

  2. 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)

    题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...

  3. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)

    题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...

  4. 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)

    题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...

  5. 「日常训练」Duff in the Army (Codeforces Round #326 Div.2 E)

    题意(CodeForces 588E) 给定一棵\(n\)个点的树,给定\(m\)个人(\(m\le n\))在哪个点上的信息,每个点可以有任意个人:然后给\(q\)个询问,每次问\(u\)到\(v\ ...

  6. 「日常训练」Kefa and Dishes(Codeforces Round #321 Div. 2 D)

    题意与分析(CodeForces 580D) 一个人有\(n\)道菜,然后要点\(m\)道菜,每道菜有一个美味程度:然后给你了很多个关系,表示如果\(x\)刚好在\(y\)前面做的话,他的美味程度就会 ...

  7. 「日常训练」Kefa and Park(Codeforces Round #321 Div. 2 C)

    题意与分析(CodeForces 580C) 给你一棵树,然后每个叶子节点会有一家餐馆:你讨厌猫(waht?怎么会有人讨厌猫),就不会走有连续超过m个节点有猫的路.然后问你最多去几家饭店. 这题我写的 ...

  8. 「日常训练」Kefa and Company(Codeforces Round #321 Div. 2 B)

    题意与分析(CodeForces 580B) \(n\)个人,告诉你\(n\)个人的工资,每个人还有一个权值.现在从这n个人中选出m个人,使得他们的权值之和最大,但是对于选中的人而言,其他被选中的人的 ...

  9. 「日常训练」Case of Matryoshkas(Codeforces Round #310 Div. 2 C)

    题意与分析(CodeForces 556C) 为了将所有\(n\)个娃娃编号递增地串在一起(原先是若干个串,每个串是递增的), 我们有两种操作: 拆出当前串中最大编号的娃娃(且一定是最右边的娃娃). ...

  10. 「日常训练」Queue(Codeforces Round 303 Div.2 D)

    简单到让人不敢相信是D题,但是还是疏忽了一点. 题意与分析 (Codeforces 545D) 题意:n人排队,当一个人排队的时间超过他需要服务的时间就会厌烦,现在要求一个最优排列使得厌烦的人最少. ...

随机推荐

  1. mysql创建表的注意事项

    1 库名,表名,字段名必须使用小写字母,"_"分割. 2 库名,表名,字段名必须不超过12个字符. 3 库名,表名,字段名见名识意,建议使用名词而不是动词. 4 建议使用InnoD ...

  2. SDN 第一次上机作业

    第一题 拓扑: 测试连通性: 第二题 拓扑: 测试连通性: 第三题 拓扑: 测试连通性:

  3. Cent OS home下中文目录改成英文目录

    如果安装了中文版的Cent OS之后,root目录和home目录下会出现中文的路径名,如“桌面”.“文档”.“图片”.“公共的”.“下载”.“音乐”.“视频”等目录,这样在命令行上操作十分的不方便,需 ...

  4. JAVA 泛型通配符 ? EXTENDS SUPER 的用法

    1. <? extends Hero> ArrayList heroList<? extends Hero> 表示这是一个Hero泛型或者其子类泛型heroList 的泛型可能 ...

  5. BZOJ1189:[HNOI2007]紧急疏散EVACUATE(最大流,枚举)

    Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是 ...

  6. AE-----合成

    AE-----合成 大纲:

  7. 随手练——HDU 5015 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015 看到这个限时,我就知道这题不简单~~矩阵快速幂,找递推关系 我们假设第一列为: 23 a1 a2 ...

  8. 20145203盖泽双 《Java程序设计》第十周学习总结

    20145203盖泽双 <Java程序设计>第十周学习总结 教材学习内容总结 一.网络概述 1.网络编程就是两个或多个设备(程序)之间的数据交换. 2.识别网络上的每个设备:①IP地址②域 ...

  9. 集合之ArrayList

    一.ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类 ...

  10. sql三表查询

    情景: student  id    stname    sex score   scoreid  stname  birth course id    coursename  age 简单说明  a ...