GYM 101572I(有向图上最小环)
逗号空格是假的,全都直接连边就行。
提供一个迪杰n次的图上最小环板子。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
const int maxn = 505;
const int inf = 0x3f3f3f3f;
typedef pair<int, int> pii;
int n;
string s[maxn];
string t;
int cnt;
map<string, int> id;
vector<int> adj[maxn];
int dis[maxn], pre[maxn], Ans[maxn];
int ans = inf, final;
int vis[maxn];
int dij(int st) {
memset(pre, 0, sizeof pre);
memset(dis, 0x3f, sizeof dis);
priority_queue<pii, vector<pii>, greater<pii> > Q;
for (int i : adj[st]) {
Q.push({1, i});
dis[i] = 1;
pre[i] = st;
}
while (!Q.empty()) {
int d = Q.top().first, u = Q.top().second;
Q.pop();
if (d > dis[u]) continue;
for (int i : adj[u]) {
if (dis[i] > dis[u] + 1) {
dis[i] = dis[u] + 1;
pre[i] = u;
if (i == st) return dis[i];
Q.push({dis[i], i});
}
}
}
return dis[st];
}
void print(int cur) {
if (vis[cur]) return;
vis[cur] = 1;
print(Ans[cur]);
cout << s[cur] << " ";
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s[i];
id[s[i]] = i;
}
for (int i = 1; i <= n; i++) {
cin >> t >> cnt;
int u = id[t];
for (int j = 0; j < cnt; j++) {
cin >> t;
getline(cin, t);
t.erase(0, 1);
string tmp = "";
for (int aa = 0; aa < t.length(); aa++) {
if (t[aa] != ',') {
tmp += t[aa];
} else {
int v = id[tmp];
adj[u].push_back(v);
aa++;
tmp = "";
}
}
if (tmp != "") {
int v = id[tmp];
adj[u].push_back(v);
}
}
}
for (int i = 1; i <= n; i++) {
int tmp = dij(i);
if (ans > tmp) {
ans = tmp;
final = i;
memcpy(Ans, pre, sizeof pre);
}
}
if (ans == inf) {
puts("SHIP IT");
} else {
print(final);
}
}
GYM 101572I(有向图上最小环)的更多相关文章
- HIT 2739 - The Chinese Postman Problem - [带权有向图上的中国邮路问题][最小费用最大流]
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2739 Time limit : 1 sec Memory limit : 64 M A Chinese ...
- 【Floyd算法】Gym - 101572I - Import Spaghetti
题意:有向图最小环,输出方案. #include<cstdio> #include<iostream> #include<string> #include<a ...
- 非负权值有向图上的单源最短路径算法之Dijkstra算法
问题的提法是:给定一个没有负权值的有向图和其中一个点src作为源点(source),求从点src到其余个点的最短路径及路径长度.求解该问题的算法一般为Dijkstra算法. 假设图顶点个数为n,则针对 ...
- Codeforces 183C(有向图上的环长度)
因为公用一个系统所以大家求gcd:衡量各点之间的拓扑位置,如果到达同一点有不同的长度则取gcd. #include <cstdio> #include <cstring> #i ...
- 【做题记录】[NOI2008] 假面舞会—有向图上的环与最长链
luogu 1477 [NOI2008] 假面舞会 容易发现: 如果图中没有环,那么面具种数一定是所有联通块内最长链之和,最少为 \(3\) . 如果有环,则面具种数一定是所有环的大小的最大公约数. ...
- poj1734 Sightseeing trip【最小环】
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions:8588 Accepted:3224 ...
- 关于Floyd求解最小环的问题
最近学习了floyd的奇妙用处,求解最小环,自己的领悟写在了纸上. 对于一个最小环,显然至少要包含三个点(此处不把两个点的回路称之为环) 从大体上考虑的话,一定有一个点与左右两侧的点是直接连接的(即不 ...
- 解析·NOIP·冷门 CLZ最小环
赐予我力量,去改变我所能改变的;赐予我勇气,去接受我不能改变的;并赐予我智慧,去分辨这两者. -----安东尼达斯 NOIP的图论题中有一部分是跟图上的环有关的.蒟蒻的我在USACO上刷题时发现了一种 ...
- Codeforces Gym 100431A Achromatic Number 欧拉回路
原题链接:http://codeforces.com/gym/100431/attachments/download/2421/20092010-winter-petrozavodsk-camp-an ...
随机推荐
- Android SDK中 tools 目录下的工具介绍
Android SDK包含了各种各样的定制工具,简介如下: Android模拟器(Android Emulator )它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的Andro ...
- (转)linux 打开文件数 too many open files 解决方法
too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户最大允许打开文件数量 ulimit -a fdipzone@ubuntu: ...
- HDU4080Stammering Aliens(后缀数组+二分)
However, all efforts to decode their messages have failed so far because, as luck would have it, the ...
- ntp服务器同步时间详细配置
部署NTP服务器进行时间同步 NTP服务端:linl_S IP:10.0.0.15 NTP客户端:lin_C IP:10.0.0.16 NTP服务概述 1.原理 NTP(Network ...
- YPBPR_PC下图像有毛刺或者水纹干扰的处理办法
VGA下一般是不做任何处理的,当然也不排除个别情况下,客户强烈要求,会打开的现象. (1)做一下auto color和auto adjust (2)调节一下ADC,如果是mstar的方案,将对比机的的 ...
- UML统一建模语UML2和EnterpriseArchitect
其实前面的UML统一建模语言(一)所描述的都是UML1的内容,现在咱们聊一聊UML2. UML2.x完全建立在UML1.x基础之上,大多数的UML1.x模型在UML2.x中都可用.但UML2.x在结构 ...
- Elasticsearch的前后台运行与停止(rpm包方式)
对应,这es的下载,需要rpm包. Elasticsearch-2.4.3的下载(图文详解) 建议用root用户 [root@djt002 elasticsearch-2.4.3]$ pwd/usr/ ...
- [提高班] 2017 Summer Training Day1补题
题目地址:https://vjudge.net/contest/175939#overview A.数据范围是10^9,所以需要一个巧思路.对于一个数n,如何去判定比它的所有数是否是二进制形式.比n小 ...
- maven变量说明
Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirect ...
- 性能压测,SQL查询异常
早上测试对性能压测,发现取sequence服务大量超时报错,查询线上的监控SQL: 大量这个查询,我在DeviceID和Isdelete上建有复合索引,应该很快,而且我测试了一下,取值,执行效率很高, ...