题意与分析

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

不过思路是很清晰的:先做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. C++ Boost在Windows和Linux下的编译安装

    再debian下直接apt-get install gcc g++就可以了.按照类似的逻辑,再Fedora下yum install gcc g++ 报告无法找到g++包. 差了一下,原来这个包的名字叫 ...

  2. October 1st 2017 Week 40th Sunday

    It's only after we've lost everything that we're free to do anything. 只有我们失去了所有之后我们才能随心而为. After los ...

  3. LA 3938 动态最大连续区间 线段树

    思路很清晰,实现很繁琐.分析过程可以参考LRJ,自己的总结晚些放. #include <cstdio> #include <cstring> #include <algo ...

  4. 用一个变量表示 ----------"序号,名称,价格"

     goods = [{"name": "电脑", "price": 1999},          {"name": & ...

  5. SQLException: Io 异常: Connection refused ERR=12514 ERR=1153异常处理过程

    solr更新索引连接数据库地址时发生的错误,数据库拒绝连接,经过调查是因为solr的data-config.xml 文件中配置数据库连接的地方,不应该配置数据库实例名而应该是数据库server_nam ...

  6. linux_bc命令

    bc 命令:     bc 命令是用于命令行计算器. 它类似基本的计算器. 使用这个计算器可以做基本的数学运算. 语法:  语法是      bc [命令开关]命令开关:      -c 仅通过编译. ...

  7. 【洛谷】【动态规划/背包】P1417 烹调方案

    由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填 ...

  8. luogu【模板】三维偏序(陌上花开)

    嘟嘟嘟 很显然我开始学\(CDQ\)分治了. 我刚开始学的时候看了一篇博客,上面全是一些抽象的概念,看完后真是一头雾水,最后还不得不抄了这题的代码. 但这样可不行呀-- 于是我就不打算再扣那篇博客,而 ...

  9. 2、JVM--Java内存区域与内存溢出异常

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来. 2.1.概述 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高 ...

  10. 【转】HBase架构解析

    转载地址:http://www.blogjava.net/DLevin/archive/2015/08/22/426877.html HBase架构组成 HBase采用Master/Slave架构搭建 ...