题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927

在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边。

代码:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 10010;
int head[maxn], Next[maxn * 2], ver[maxn * 2], f[maxn * 2], tot;
LL l[maxn * 2], r[maxn * 2];
LL d[2][maxn];
bool v[2][maxn];
queue<int> q[2];
int s1, s2, t, n, m, k;
void add(int x, int y, LL lb, LL rb) {
ver[++tot] = y, l[tot] = lb, r[tot] = rb, Next[tot] = head[x], head[x] = tot, f[tot] = x;
}
void spfa(int pos, int s) {
// memset(d[pos], 0x3f, sizeof(d[pos]));
// memset(v[pos], 0, sizeof(v[pos]));
// q[pos].push(s), v[pos][s] = 1, d[pos][s] = 0;
while(q[pos].size()) {
int x = q[pos].front();
q[pos].pop();
v[pos][x] = 0;
for (int i = head[x]; i; i = Next[i]) {
int y = ver[i], z = r[i];
if(d[pos][y] > d[pos][x] + z) {
d[pos][y] = d[pos][x] + z;
if(!v[pos][y])
q[pos].push(y), v[pos][y] = 1;
}
}
}
}
bool solve(int flag) {
memset(d, 0x3f, sizeof(d));
memset(v, 0, sizeof(v));
d[0][s1] = d[1][s2] = 0;
v[0][s1] = v[1][s2] = 1;
q[0].push(s1), q[1].push(s2);
bool flag1 = 1;
while(flag1) {
spfa(0, s1), spfa(1, s2);
flag1 = 0;
for (int i = m + 1; i <= k + m; i++) {
if(d[0][f[i]] + flag <= d[1][f[i]] && l[i] != r[i]) {
flag1 = 1;
q[0].push(f[i]), q[1].push(f[i]);
v[0][f[i]] = 1, v[1][f[i]] = 1;
r[i] = l[i];
}
}
}
return d[0][t] + flag <= d[1][t];
}
int main() {
int x, y;
LL z, t1;
scanf("%d%d%d", &n, &m, &k);
scanf("%d%d%d", &s1, &s2, &t);
for (int i = 1; i <= m; i++) {
scanf("%d%d%lld", &x, &y, &z);
add(x, y, z, z);
}
for (int i = 1; i <= k; i++) {
scanf("%d%d%lld%lld", &x, &y, &z, &t1);
add(x, y, z, t1);
}
if(solve(1)) {
printf("WIN\n");
for (int i = m + 1; i <= m + k; i++)
printf("%d ", r[i]);
printf("\n");
return 0;
}
if(solve(0)) {
printf("DRAW\n");
for (int i = m + 1; i <= m + k; i++)
printf("%d ", r[i]);
printf("\n");
return 0;
}
printf("LOSE\n");
}

  

Codeforces 360E 贪心 最短路的更多相关文章

  1. codeforces DIV2 D 最短路

    http://codeforces.com/contest/716/problem/D 题目大意:给你一些边,有权值,权值为0的表示目前该边不存在,但是可以把0修改成另外一个权值.现在,我们重新建路, ...

  2. CodeForces - 893D 贪心

    http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱.到了晚上, ...

  3. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划

    There are n people and k keys on a straight line. Every person wants to get to the office which is l ...

  4. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心

    Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...

  5. CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作

    题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...

  6. [CSP-S模拟测试]:午餐(贪心+最短路)

    题目传送门(内部题115) 输入格式 第一行两个正整数$n,m$. 接下来$m$行,每行$4$个正整数$u_j,v_j,L_j,R_j$. 接下来一行$n$个数,若第$i$个数为$1$,则$i$号同学 ...

  7. C - Ordering Pizza CodeForces - 867C 贪心 经典

    C - Ordering Pizza CodeForces - 867C C - Ordering Pizza 这个是最难的,一个贪心,很经典,但是我不会,早训结束看了题解才知道怎么贪心的. 这个是先 ...

  8. Codeforces 570C 贪心

    题目:http://codeforces.com/contest/570/problem/C 题意:给你一个字符串,由‘.’和小写字母组成.把两个相邻的‘.’替换成一个‘.’,算一次变换.现在给你一些 ...

  9. Codeforces 732e [贪心][stl乱搞]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...

随机推荐

  1. 前端学习(三十五)模块化es6(笔记)

    RequireJs:一.安装.下载    官网: requirejs.org    Npm:  npm i requirejs二.使用    以前的开发方式的问题:        1).js 是阻塞加 ...

  2. 【LeetCode】图论 graph(共20题)

    [133]Clone Graph (2019年3月9日,复习) 给定一个图,返回它的深拷贝. 题解:dfs 或者 bfs 都可以 /* // Definition for a Node. class ...

  3. MySQL系列之三查询优化

    通常来说,查询的生命周期大致可以按照顺序来看从客户端到服务端,然后在服务器上进行解析,生产执行计划, 执行,并返回结果给客户端.其中的执行阶段可以认为是整个生命周期中最重要的阶段,其中包括了大量为了检 ...

  4. [BZOJ3626] [LNOI2014] LCA 离线 树链剖分

    题面 考虑到询问的\(l..r,z\)具有可减性,考虑把询问差分掉,拆成\(r,z\)和\(l-1,z\). 显然这些LCA一定在\(z\)到根的路径上.下面的问题就是怎么统计. 考虑不是那么暴力的暴 ...

  5. ImageField 字段的使用

    Django模型中的ImageField和FileField的upload_to选项是必填项,其存储路径是相对于MEIDA_ROOT而来的.

  6. python学习笔记(四)字符串及字符串操作

    字符串 字符串可以存任意类型的字符串,比如名字,一句话等等. 字符串还有很多内置方法,对字符串进行操作,常用的方法如下: name1='hello world' print(name.capitali ...

  7. ceph优化记录 ceph.conf优化详解

    https://cloud.tencent.com/developer/article/1173069 记录一下一些ceph优化的设置,部分内容来自网络,有些请根据自己需求相应修改 1.  Kerne ...

  8. Sumdiv

    题目链接 题意:求a^b的所有约数之和mod9901. 思路:因为一个数A能够表示成多个素数的幂相乘的形式.即A=(a1^n1)*(a2^n2)*(a3^n3)...(am^nm).所以这个题就是要求 ...

  9. springBoot JPA PageAble分页查询出错,PropertyReferenceException: No property creation found for type

    PropertyReferenceException: No property creation found for type @RequestParam(required = false, defa ...

  10. JQuery获取与设置select

    获取select : 1.获取select 选中的 text :    $("#ddlregtype").find("option:selected").tex ...