ZOJ-2365 Strong Defence 无公共边割边集
题意:该题的题意晦涩,勉勉强强听别人说了一遍后再读了一遍题才算懂了题意,题图说的是A国因为B国药进攻自己的国家,于是想办法在联通A-B之间的路径上进行阻击。阻击的舰船停留在一个路径上,舰船上都要放置水晶,相同水晶的舰船可能会被一次性摧毁,于是现在要求给出尽可能多的方案来部署舰船,使得同一水晶的舰船能够阻断所有从B到A的路径,每条路径上只能够部署一部舰船。
分析:题意抽象之后就是一个网络求出从源点到汇点的尽可能多的割边集,且每个割边集没有公共边。根据题目的要求,我们设想从A到B的最短路长度为K,那么假设方案数大于K,那么每个割边集至少要包含该最短路上的一条边,否则存在从A到B的通路,那么这个包含的最优方法是一次包含一条,即便如此该过程也只能够进行K次,超过K次后必定不能够再包含最短路上的任何一条边,因此最后的答案就是K了,然后输出求出最短路之后的距离为1的边集即可。
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std; const int N = ;
int n, m, s, t;
int dis[N];
char vis[N], mp[N][N];
queue<int>q;
vector<int>v[N]; struct Edge {
int a, b;
}e[N*N]; void spfa() {
memset(dis, 0x3f, sizeof (dis));
memset(vis, , sizeof (vis));
dis[s] = , vis[s] = ;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
vis[u] = ;
for (int v = ; v <= n; ++v) {
if (!mp[u][v]) continue;
if (dis[v] > dis[u] + ) {
dis[v] = dis[u] + ;
if (!vis[v]) {
vis[v] = ;
q.push(v);
}
}
}
}
} int main() {
int T;
scanf("%d", &T);
while (T--) {
memset(mp, , sizeof (mp));
scanf("%d %d %d %d", &n, &m, &s, &t);
int a, b;
for (int i = ; i < n; ++i) v[i].clear();
for (int i = ; i <= m; ++i) {
scanf("%d %d", &a, &b);
mp[a][b] = mp[b][a] = ;
e[i].a = a, e[i].b = b;
}
spfa();
printf("%d\n", dis[t]);
for (int i = ; i <= m; ++i) {
int a = e[i].a, b = e[i].b;
if (dis[a]+==dis[b]) {
v[dis[a]].push_back(i);
} else if (dis[b]+==dis[a]) {
v[dis[b]].push_back(i);
}
}
for (int i = ; i < dis[t]; ++i) {
printf("%d", v[i].size());
for (int j = ; j < v[i].size(); ++j) {
printf(" %d", v[i][j]);
}
puts("");
}
}
return ;
}
ZOJ-2365 Strong Defence 无公共边割边集的更多相关文章
- zoj 2874 & poj 3308 Paratroopers (最小割)
意甲冠军: 一m*n该网络的规模格.详细地点称为伞兵着陆(行和列). 现在,在一排(或列) 安装激光枪,激光枪可以杀死线(或塔)所有伞兵.在第一i安装一排 费用是Ri.在第i列安装的费用是Ci. 要安 ...
- POJ1815 Friendship(字典序最小最小割割边集)
看了题解.当时也觉得用邻接矩阵挺好写的,直接memset:然而邻接矩阵不懂得改,于是就放开那个模板,写了Dinic.. 方法是,按字典序枚举每一条满流的边,然后令其容量减1,如果最大流改变了,这条边就 ...
- ZOJ-2365 Strong Defence 贪心,BFS
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2365 我没看懂题目...这样理解:一个有向图,要给一些边染色,使 ...
- zoj 2676 dinic模板求实型最小割(可做dinic模板)
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> #inc ...
- zoj 2676 Network Wars 0-1分数规划+最小割
题目详解出自 论文 Amber-最小割模型在信息学竞赛中的应用 题目大意: 给出一个带权无向图 G = (V,E), 每条边 e属于E都有一个权值We,求一个割边集C,使得该割边集的平均边权最小,即最 ...
- hdu1569 方格取数(2) 最大点权独立集=总权和-最小点权覆盖集 (最小点权覆盖集=最小割=最大流)
/** 转自:http://blog.csdn.net/u011498819/article/details/20772147 题目:hdu1569 方格取数(2) 链接:https://vjudge ...
- 【Java】 剑指offer(52) 两个链表的第一个公共结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入两个链表,找出它们的第一个公共结点. 思路 蛮力法:遍历第一个 ...
- 160. Intersection of Two Linked Lists(剑指Offer-两个链表的第一个公共结点)
题目: Write a program to find the node at which the intersection of two singly linked lists begins. Fo ...
- 【BZOJ4808/3175】马/[Tjoi2013]攻击装置 最小割
[BZOJ4808]马 Description 众所周知,马后炮是中国象棋中很厉害的一招必杀技."马走日字".本来,如果在要去的方向有别的棋子挡住(俗称"蹩马腿" ...
随机推荐
- va_list/va_start/va_arg/va_end深入分析【转】
转自:http://www.cnblogs.com/justinzhang/archive/2011/09/29/2195969.html va_list/va_start/va_arg/va_end ...
- oracle 11g 64w 用32位的pl/sql
1. 下载64位Oracle,解压两文件,解压完成后将文件合并,安装: 2. 下载PL/SQL,安装: 3. 下载instantclient-basic-win32-11.2.0.1.0.zip ...
- xib托线出来的为什么是weak而不是strong
因为控件他爹( view.superview )已经揪着它的小辫了( strong reference ),你( viewController )眼瞅着( weak reference )就好了. 当 ...
- HDU 3076:ssworld VS DDD(概率DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=3076 ssworld VS DDD Problem Description One day, s ...
- linux正则表达式使用
首先介绍下正则表达式,它是由一串字符和元字符构成的字符串,简称RE(Regular Expression),它的主要功能是文本查询和字符串操作,它可以匹配一个文本的字符和字符集,达到数据过滤的效果. ...
- WP8.1简单项目 《在线词典》
为什么要做这个词典? 学了正则表达式要运用 增加WP开发熟练度 项目中运用了那些技术? HttpClient 正则表达式 数据绑定 详解 通过http://cn.bing.com/dict/searc ...
- ExecutorService线程池讲解
ExecutorService 建立多线程的步骤: 1.定义线程类 class Handler implements Runnable{ } 2.建立ExecutorService线程池 Execut ...
- exp函数
第一种是tensor用exp函数 th> a [torch.DoubleTensor of size 1x3] [.0002s] th> a:exp() 2.7183 2.7183 1.0 ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1007
Problem Description ACM小学妹在今天的暑假训练结束后,想看球赛放松一下.当他打开电脑时查询到联盟今天直播N场球赛,每场球赛的起止时间(S1,E1),(S2,E2),...,(SN ...
- codevs4817 江哥的dp题d
4817 江哥的dp题d 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold [题目描述] Description 已知1-N的排列P的LIS(最长上升子序列)不超 ...