Gym 100917F Find the Length
题目链接:http://codeforces.com/gym/100917/problem/F
------------------------------------------------------------------------------------------------
给出一个无向正权无自环图 要求对于每个点 经过它的最短"简单环"的长度
其中简单环的定义是 环上每条无向边都经过且仅经过一次
显然这个环至少经过三条边 三个点
我们或许会产生这样一种思路 对于每次询问 我们以该点$s$作为起点
先处理出到其余每点的最短路 然后枚举一条边 两端分别为$u\ v$
用$s$分别到$u\ v$的最短路再加上这条边的长度来更新结果
然而这样连样例都过不了 因为会产生重边
于是我们考虑把最短路径所经过的边都标记一下(多个可选的话随便标记一个)
然后枚举边的时候碰到标记过的边就直接跳过
不过这样还存在一种情况 就是 $u\ v$ 属于最短路径边所构成树上的除根节点外同一子树
这种情况也是会有重边的 所以这里再判断以下去除就好
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = , E = N * N * ;
int firste[N], nexte[E], v[E], w[E], flag[E];
int used[N], dist[N], fa[N];
int n, e = ;
void build(int x, int y, int z)
{
nexte[++e] = firste[x];
firste[x] = e;
v[e] = y;
w[e] = z;
}
int main()
{
scanf("%d", &n);
int x;
for(int i = ; i <= n; ++i)
for(int j = ; j <= n; ++j)
{
scanf("%d", &x);
if(i >= j)
continue;
if(x != -)
{
build(i, j, x);
build(j, i, x);
}
}
for(int i = ; i <= n; ++i)
{
int u = i;
for(int j = ; j <= n; ++j)
fa[j] = j;
memset(dist, 0x3f, sizeof dist);
dist[u] = ;
for(int t = ; t < n; ++t)
{
used[u] = i;
int mdist = 1e9, tu;
for(int p = firste[u]; p; p = nexte[p])
if(dist[v[p]] > dist[u] + w[p])
dist[v[p]] = dist[u] + w[p];
for(int j = ; j <= n; ++j)
if(used[j] != i && dist[j] < mdist)
{
tu = j;
mdist = dist[j];
}
for(int p = firste[tu]; p; p = nexte[p])
if(dist[tu] == dist[v[p]] + w[p])
{
flag[p] = flag[p ^ ] = i;
if(v[p] != i)
fa[tu] = fa[v[p]];
break;
}
u = tu;
}
int ans = 1e9;
for(int p = ; p < e; p +=)
if(flag[p] != i && fa[v[p]] != fa[v[p ^ ]])
ans = min(ans, dist[v[p]] + dist[v[p ^ ]] + w[p]);
printf("%d\n", ans < 1e9 ? ans : -);
}
return ;
}
Gym 100917F Find the Length的更多相关文章
- 《Pro AngularJS》学习小结-02
上一篇的项目只有一个单独的模板页面,加入了相应的controller,filter,使得页面上的数据能够动态的变化.现在我们开始建立并整合多个模板,加入购物车模块和结账checkout模块. 一.在页 ...
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS Memory Limit:65536KB 64bit IO Fo ...
- Gym 100917J---Judgement(01背包+bitset)
题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatements The jury ...
- Gym 100917J---dir -C(RMQ--ST)
题目链接 http://codeforces.com/gym/100917/problem/D problem description Famous Berland coder and IT mana ...
- ACM: Gym 100935B Weird Cryptography - 简单的字符串处理
Weird Cryptography Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- ACM: Gym 100935F A Poet Computer - 字典树
Gym 100935F A Poet Computer Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d &am ...
- CodeForces Gym 100500A A. Poetry Challenge DFS
Problem A. Poetry Challenge Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...
- [Gym]2008-2009 ACM-ICPC, NEERC, Moscow Subregional Contest
比赛链接:http://codeforces.com/gym/100861 A模拟,注意两个特殊的缩写. #include <bits/stdc++.h> using namespace ...
- Codeforces Gym 100803G Flipping Parentheses 线段树+二分
Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...
随机推荐
- Struts2异常:HTTP Status 404 - /Struts2/book/addBook.action
HTTP Status 404 - /Struts2/book/addBook.action 如果在Struts2的框架中访问路径出现了这个错误,可能存在的原因有如下的两个: 1. 路径写错,也就是a ...
- c编程过程中错误笔记-& 理解不深啊!
写了一个函数,删除数组里面的元素,声明如: int student_delete(int *len, struct student stu[]): 在其内部调用了另一个函数 int student_d ...
- 多线程10-SemaphoreSlim
); ;i<=;i++) { + * i; )); C ...
- JAVA总结--设计模式
三大类设计模式: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为 ...
- <每日一题> Day3:CodeForces-1141B.MaximalContinuousRest(简单题)
题目链接 参考代码: #include <iostream> #include <algorithm> using namespace std; + ; int value[m ...
- Python 中三大框架各自的应用场景??
django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,正常的并发量不过 10000,如果要实现高并发的话,就要对 django 进行二次开发,比如把整个笨重的框架给拆掉,自己写 soc ...
- MVC 与 MVP 并无两样
关于 MVC 的定义介绍,摘一段百度百科介绍: MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应 ...
- VirtualBox中安装CentOS 7
1.如下所示图,点击“新建”,创建一个新的虚拟机 2.类型选择Linux,版本选择Red Hat,下一步 3.分配内存大小,电脑8G内存,所以分给虚拟机2G,选择下一步 4.选择“现在创建虚拟硬盘” ...
- 2018-8-10-cant-found-Microsoft.VSSDK.BuildTools.15.0.26201
title author date CreateTime categories cant found Microsoft.VSSDK.BuildTools.15.0.26201 lindexi 201 ...
- MongoDB的应用
一.MongoDB后台管理 # ./mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoD ...