首页 > 其他分享 >Living-Dream 系列笔记 第85期

Living-Dream 系列笔记 第85期

时间:2024-11-09 17:56:47浏览次数:1  
标签:Living cur int dfn low sizb siza Dream 85

割边

在无向图中删了一条边后,图中联通块个数增加,则称该边为割边。

判定

对于一条 \(cur \to i\) 的边,若 \(low_i > dfn_{cur}\)(不能取等,画图便知理由),则该边为割边。

T103481 & P1656

板子。

P1656 code
#include<bits/stdc++.h>
using namespace std;

const int N=1e5+5;
int n,m,cnt;
struct EDGE{
    int v,i;
};
struct NODE{
    int u,v,p;
}e[N];
vector<EDGE> G[N];
int dfn[N],low[N];
bool bridge[N];

bool cmp(NODE x,NODE y){
    if(x.u!=y.u)
        return x.u<y.u;
    return x.v<y.v;
}
void tarjan(int cur,int edg){
    dfn[cur]=low[cur]=++cnt;
    for(auto [v,i]:G[cur]){
        if(!dfn[v]){
            tarjan(v,i);
            low[cur]=min(low[cur],low[v]);
            if(low[v]>dfn[cur]){
                bridge[i]=1;
            }
        }
        else if (i!=edg) {
            low[cur]=min(low[cur],dfn[v]);
        }
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>m;
    for(int i=1,u,v;i<=m;i++){
        cin>>u>>v;
        if(u>v) swap(u,v);
        e[i]={u,v,i};
        G[u].push_back({v,i});
        G[v].push_back({u,i});
    }
    for (int i=1; i<=n; i++){
        if (!dfn[i]) {
            tarjan(i,0);
        }
    }
    sort(e+1,e+m+1,cmp);
    for(int i=1;i<=m;i++)
        if(bridge[e[i].p])
            cout<<e[i].u<<' '<<e[i].v<<'\n';
    return 0;
}

P7687

容易发现只有割边才会成为答案,并且分出的联通块中必须有一个全 A 或全 B,于是直接维护联通块 A 的数量与 B 的数量即可判定。

想到了思路但是认为自己不会写,怎么会是呢。加训 /fn

code
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=1e5+5,M=1e6+5;
int n,m,k,l,cnt;
struct EDGE{
	int u,v;
};
vector<EDGE> ans;
vector<int> G[M];
int dfn[N],low[N];
int siza[N],sizb[N];

void tarjan(int cur,int fa){
	dfn[cur]=low[cur]=++cnt;
	for(int i:G[cur]){
		if(i==fa)
			continue;
		if(!dfn[i]){
			tarjan(i,cur);
			low[cur]=min(low[cur],low[i]);
			siza[cur]+=siza[i];
			sizb[cur]+=sizb[i];
			if(low[i]>dfn[cur]&&(!siza[i]||!sizb[i]||siza[i]==k||sizb[i]==l)){
				ans.push_back({cur,i});
			}
		}
		else{
			low[cur]=min(low[cur],dfn[i]);
		}
	}
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>m>>k>>l;
	for(int i=1,u;i<=k;i++){
		cin>>u;
		siza[u]++;
	}
	for(int i=1,u;i<=l;i++){
		cin>>u;
		sizb[u]++;
	}
	for(int i=1,u,v;i<=m;i++){
		cin>>u>>v;
		G[u].push_back(v);
		G[v].push_back(u);
	} 
	tarjan(1,0);
    cout<<ans.size()<<'\n';
    for(auto i:ans)
    	cout<<i.u<<' '<<i.v<<'\n';
	return 0;
} 

CF1761E

妙妙题。tj

标签:Living,cur,int,dfn,low,sizb,siza,Dream,85
From: https://www.cnblogs.com/XOF-0-0/p/18537054

相关文章

  • CF1859
    A给定一个数组,要求把它分为两个非空数组$S,T$,满足不存在$a\inS,b\inT,~b|a$。构造一组方案。$n\le10^5$构造题,考虑观察性质。发现若\(b|a\)有\(b\leqa\),那么只需把原数组中的所有最小值放到\(S\)中,其它全部扔到\(T\)中即可。启发我们构造时应发掘性质,利用好那......
  • DAC8568IAPWR 数据手册 具有 2.5V、2ppm/°C 内部基准电压的 DAC7568、DAC8168、DAC85
    DAC7568、DAC8168和DAC8568分别为12位、14位和16位低功耗、电压输出、八通道数模转换器(DAC)。这些器件包括一个2.5V、2ppm/°C内部基准电压(默认禁用),可提供2.5V或5V的满量程输出电压范围。内部基准电压初始精度为0.004%,而且可在VREFIN/VREFOUT引脚上提供高达20mA......
  • 文心一言 VS 讯飞星火 VS chatgpt (385)-- 算法导论24.5 5题
    五、设G=(V,E)......
  • 85_api_intro_metadata_ceemajor
    全国大学高校专业数据API接口提供大学专业基础数据,持续更新,各类专业属性。1.产品功能2023年数据已更新;提供最新的全国高校专业基本信息;总计近3000条专业精准基础数据;每月一次数据更新校正;同时包含了专业开设课程列表;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.......
  • 解决安装Dreamweaver时出现vic32.dll错误的方法(提示vic32.dll错误怎么办)
    在安装AdobeDreamweaver时,有时会遇到“vic32.dll”文件缺失或加载失败的错误提示。这不仅会影响安装过程,还会导致软件无法正常运行。本文将详细介绍如何解决这一问题,确保Dreamweaver能够顺利安装和使用。错误原因1.文件缺失:vic32.dll文件可能由于各种原因(如病毒攻击、系统......
  • qoj8542 Add One 2
    大概是把官方题解再说一遍。注意到,给\(k\)个数加一的代价为\(k\)。定义一个序列\(S\)合法当且仅当:对于初始为全\(0\)的序列\(B\),可以通过对\(B\)进行多次给定的两种操作得到\(S\)。可以把题意转化为:给定序列\(A\),对于所有合法序列\(S\),且\(\foralliS_i\geqA_......
  • KP8530X系列KP85301SGA 650V耐压 集成自举二极管的半桥栅极驱动器 北欧双线灯调色解决
    KP8530X同系列选型参考:KP85301SGA兼容IR2103    KP85302SGA兼容IR2106、IR2001、IR2005、IR2186KP85303SGA兼容IR2104 KP85304SGA兼容IR2304  KP85305SGA兼容IR21857KP8530X系列KP85301SGA是一款650V耐压,集成自举二极管的半桥栅极驱动器,具有0.3A拉电流和......
  • ipad协议853版技术分析
    微信网页版的通信协议,很多人都想自己写了个程序,实现微信的登录、初始化、读取联系人列表、发送微信、接收微信等功能,其实大家在网上看一下也有不少人做过这方面的内容。我主要用的工具是HTTPAnalyzer,我认为这个是目前分析http/https协议最好用的工具了,比wireshark和fiddler都清......
  • DAC8568IAPWR 数据手册 具有 2.5V、2ppm/°C 内部基准电压的 DAC7568、DAC8168、DAC85
     DAC7568、DAC8168和DAC8568分别为12位、14位和16位低功耗、电压输出、八通道数模转换器(DAC)。这些器件包括一个2.5V、2ppm/°C内部基准电压(默认禁用),可提供2.5V或5V的满量程输出电压范围。内部基准电压初始精度为0.004%,而且可在VREFIN/VREFOUT引脚上提供高达......
  • 如何简单理解数据集在IEC61850标准CMS协议中的应用
    在电力自动化领域,IEC61850标准作为变电站通信网络和系统的国际标准,为电力系统的智能化、数字化提供了坚实的支撑。其中,数据集(DataSet)作为IEC61850标准中的一个核心概念,以其独特的设计理念和强大的功能特性,成为了实现高效数据管理与通信的关键,极大地简化了客户端与服务器端之间......