• 题目大意

    求有向图中经过某一点k的最大环(数据规模不支持floyd)。

  • 题解

    以k为起点在正向图中spfa求单源最短路。再在反向图中spfa求单源最短路。

    枚举除k外的每个点i。假设有一个同一时候包括i与k的环。ans=max{ans,dist[i]+invdist[i]}。

  • Code

#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
const int maxn = 1010, maxm = 200010, nil = 0, oo = 1061109567;
int n, m, k;
int pnt[maxn], nxt[maxm], u[maxm], v[maxm], w[maxm], e;
int d[maxn], invd[maxn];
bool vis[maxn], other[maxm];
void addedge(int x, int y, int z)
{
u[++e] = x; v[e] = y; w[e] = z;
nxt[e] = pnt[x]; pnt[x] = e; other[e] = false;
u[++e] = y; v[e] = x; w[e] = z;
nxt[e] = pnt[y]; pnt[y] = e; other[e] = true;
}
void init()
{
int x, y, z;
scanf("%d%d%d", &n, &m, &k);
for(int i = 1; i <= m; ++i)
{
scanf("%d%d%d", &x, &y, &z);
addedge(x, y, z);
}
}
void work()
{
queue <int> q;
//下面为反向spfa
memset(invd, 0x3f, sizeof(invd));
memset(vis, 0, sizeof(vis));
invd[k] = 0; vis[k] = true;
q.push(k);
while(!q.empty())
{
int tmp = q.front();
q.pop();
vis[tmp] = false;
for(int j = pnt[tmp]; j != nil; j = nxt[j])
{
if(other[j] && invd[v[j]] > invd[tmp] + w[j])
{
invd[v[j]] = invd[tmp] + w[j];
vis[v[j]] = true;
q.push(v[j]);
}
}
}
//下面为正向spfa
memset(d, 0x3f, sizeof(d));
memset(vis, 0, sizeof(vis));
d[k] = 0; vis[k] = true;
q.push(k);
while(!q.empty())
{
int tmp = q.front();
q.pop();
vis[tmp] = false;
for(int j = pnt[tmp]; j != nil; j = nxt[j])
{
if((!other[j]) && d[v[j]] > d[tmp] + w[j])
{
d[v[j]] = d[tmp] + w[j];
vis[v[j]] = true;
q.push(v[j]);
}
}
}
int ans = 0;
for(int i = 1; i <= n; ++i)
{
if(d[i] != oo && invd[i] != oo)
{
ans = max(ans, d[i] + invd[i]);
}
}
printf("%d\n", ans);
}
int main()
{
init();
work();
return 0;
}

Codevs1992题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. A10 平板开发一硬件平台搭建

    A10板子从原理图设计.接插件布局.PCB设计到物料采购以及贴片,最后调试,花了不少时间,刚刚把屏点亮了,系统总算跑起来了.整个过程遇到不少问题,包括与外面工程师沟通.硬件测试.软件调试,还有很多问题 ...

  2. Flashback version/Transaction Query,FlashbackTable

    Flashback version Query相对于Flashback Query 只能看到某一点的对象状态, Oracle 10g引入的Flashback Version Query可以看到过去某个 ...

  3. MySql命令——表相关

    auto_increment //自动增长 primary key(id) //指定主键 select last_insert_id();//获得添加列的主键值 create table produc ...

  4. jquery插件autocomplete

    项目中有时会用到自动补全查询,就像Google搜索框.淘宝商品搜索功能,输入汉字或字母,则以该汉字或字母开头的相关条目会显示出来供用户选择, autocomplete插件就是完成这样的功能. < ...

  5. XML格式导出Excel

    下面介绍一种导出Excel的方法: 此方法不需要在服务器上安装Excel,采用生成xml以excel方式输出到客户端,可能需要客户机安装excel,所以也不会有乱七八糟的权限设定,和莫名其妙的版本问题 ...

  6. SPOJ 1811 Longest Common Substring (后缀自动机第一题,求两个串的最长公共子串)

    题目大意: 给出两个长度小于等于25W的字符串,求它们的最长公共子串. 题目链接:http://www.spoj.com/problems/LCS/ 算法讨论: 二分+哈希, 后缀数组, 后缀自动机. ...

  7. [Leetcode] Two Sum (C++)

    我在Github上新建了一个解答Leetcode问题的Project, 大家可以参考, 目前是Java 为主,里面有leetcode上的题目,解答,还有一些基本的单元测试,方便大家起步. 题目: Gi ...

  8. activiti笔记一:流程图xml文件

    一. 流程图有两个基本要素组成:点和线 点:开始节点.结束节点.各种网关.各种事件 线:连接两点之间的sequenceFlow 二. 一般包含三个步骤:部署.启动.完成 三. 启动的时候,可以设置流程 ...

  9. php sscanf() 函数使用

    定义和用法 sscanf() 函数根据指定的格式解析来自一个字符串的输入. 如果只向该函数传递两个参数,数据将以数组的形式返回.否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中.如果区分 ...

  10. Mysql 6.7.7 + EntityFramework 5.0 Code First 不能 Update-Database 问题的解决

    1.修改 Migrations/Configuration.cs 文件 namespace DataModel.Migrations { using System; using System.Data ...