Vijos P1769 网络的关键边
Description
一个连通的无向图,有些点有A属性,有些点有B属性,可以同时具有.删掉某条边后,如果使得连通块中一些点不具有A,B属性的点,求这些边.
Sol
Tarjan求割边.
首先这些边一定在割边上,然后统计分开的两个连通块中,是否使一边不具有A,B属性的点.
这个只需要DFS一遍,统计该点子树中有多少a,多少b.
判断的时候就是如果 \(a[v]=0,b[v]=0,a[v]=k,b[v]=l\) 这些都合法.
Code
#include<cstdio>
#include<algorithm>
#include<utility>
#include<vector>
#include<iostream>
using namespace std; const int N = 100005;
#define mpr(a,b) make_pair(a,b) int n,m,k,l,cnt,tot,ans;
int a[N],b[N],iscut[N],e[N];
int dfsn[N],low[N],d[N],vis[N],out[N];
struct Edge{ int fr,to,id; }edge[N];
vector<Edge> g[N]; inline int in(int x=0,char ch=getchar()){ while(ch>'9'||ch<'0') ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x; }
inline void Add_Edge(int u,int v,int id){
edge[id]=(Edge){ u,v,id };
g[u].push_back((Edge){ u,v,id });
g[v].push_back((Edge){ v,u,id });
}
void Tarjan(int u,int fa){
dfsn[u]=low[u]=++cnt;
for(int i=0,lim=g[u].size(),v;i<lim;i++) if((v=g[u][i].to)!=fa){
if(!dfsn[v]){
Tarjan(v,u);
if(low[v]>dfsn[u]) iscut[g[u][i].id]=1;
low[u]=min(low[u],low[v]);
}else low[u]=min(low[u],dfsn[v]);
}
}
void DFS(int u,int fa){
vis[u]=1,d[u]=d[fa]+1;
for(int i=0,lim=g[u].size(),v;i<lim;i++) if(!vis[(v=g[u][i].to)]&&v!=fa){
DFS(v,u);a[u]+=a[v],b[u]+=b[v];
}
}
int main(){
// freopen("in.in","r",stdin);
n=in(),m=in(),k=in(),l=in();
for(int i=1;i<=k;i++) a[in()]=1;for(int i=1;i<=l;i++) b[in()]=1;
for(int i=1,u,v;i<=m;i++) u=in(),v=in(),Add_Edge(u,v,i);
for(int i=1;i<=n;i++) if(!dfsn[i]) Tarjan(i,0);
for(int i=1;i<=m;i++) if(iscut[i]) e[++tot]=i;
// for(int i=1;i<=tot;i++) cout<<e[i]<<" "<<edge[e[i]].fr<<" "<<edge[e[i]].to<<endl;
DFS(1,0);
for(int i=1;i<=tot;i++){
int u=edge[e[i]].fr,v=edge[e[i]].to;
if(d[v]<d[u]) swap(v,u);
if(a[v]==0||b[v]==0||a[v]==k||b[v]==l) out[++ans]=e[i];
}
printf("%d\n",ans);
for(int i=1;i<=ans;i++) printf("%d\n",out[i]);
return 0;
}
Vijos P1769 网络的关键边的更多相关文章
- 无线Ad-hoc网络的关键技术之路由(转)
无线Ad-hoc网络的关键技术之路由http://network.51cto.com/art/201003/189719.htm
- 【vijos】1769 网络的关键边(割边)
https://vijos.org/p/1769 啊,割边写挫了害得我交了那么多发... 本题多想想就出来了.. 首先求出割边,显然关键边就在割边上. 求完割边后,我们先从一个点dfs,维护A的点数和 ...
- 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析
科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...
- 前端学HTTP之网络基础
× 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...
- Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- CentOS的网络配置(终端环境)
在虚拟机中安装了Server版的CentOS,用于做Hadoop相关的实验.Server版的CentOS默认是没有桌面环境的,eth0的网络默认也没有开启,需要我们手动启动网络. 关键配置说明 网络和 ...
- CloudStack 物理网络架构
原文地址:http://www.shapeblue.com/cloudstack/understanding-cloudstacks-physical-networking-architecture/ ...
- 再读TCP/IP网络7层协议
随着工作的深入,每次读这7层协议,每次都有不同的理解. 分层名 分层号 ...
- IPFS网络是如何运行的(p2p网络)
IPFS是一个p2p网络,先来看看BitTorrent的p2p网络是如何工作的? 想要bt下载一个文件,首先你需要一个种子文件torrent,种子文件包含至少一个 Tracker(一台服务器地址)信息 ...
随机推荐
- Yoshua Bengio 2016年5月11日在Twitter Boston的演讲PPT
Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt) Yoshua Bengio,电脑科学家,毕业于麦吉尔大学,在MIT和AT&T贝尔实验室做过博士后研 ...
- JSP 入门 HTML嵌套Java脚步 显示时间
<%@ page import="java.util.Date"%> <%@ page language="java" contentType ...
- CodeForces 716A Crazy Computer
题目链接:http://codeforces.com/problemset/problem/716/A 题目大意: 输入 n c, 第二行 n 个整数,c表示时间间隔 秒. 每个整数代表是第几秒.如果 ...
- UnityShader:HSV(色相,饱和度,亮度)转换
http://blog.csdn.net/costfine/article/details/46930473 发现其实美术调整颜色的时候大部分都是调整的HSV,因为可以方便的分别调整色相(hue).饱 ...
- Unity 下载
Unity历史版本 http://wiki.ceeger.com/unity:history#unity_522f1 UNITY 下载存档 http://unity3d.com/cn/get-unit ...
- C#异常类相关总结
C#异常类相关总结 C#异常类相关总结 C#异常类一.基类ExceptionC#异常类二.常见的异常类1.SystemException类:该类是System命名空间中所有其他异常类的基类.(建议:公 ...
- xheditor编辑器的使用
xheditor编辑器的使用 一个博客.cms网站都一定会用到一个html编辑器,刚好xmfdsh在做网站时候需要用到这类编辑器,在对比了之后,发现其实差不了多少,刚好一个不错的friend在用xhe ...
- yaf自动加载文件
models下面的文件 例如:Article.php 类名必须是:ArticleModel 调用时:$article_models = new ArticleModel(); library下面的文件 ...
- vim ctags使用方法
一.用好系统自带软件ctags 大部分的unix系统都有ctags软件,它能跟vim很好地合作. 用途: 生成c语言的标签文件,实现相关c文件之间的跳转. 用法: 1.生成标签文件 ...
- PHP 5.5 新特性
文章转自:http://wulijun.github.io/2013/07/17/whats-new-in-php-5-5.html http://www.cnblogs.com/yjf512/p/3 ...