zoukankan      html  css  js  c++  java
  • BZOJ 4238 电压 解题报告

    BZOJ 4238 电压

    考虑一条边成为答案以后,删去Ta后剩下的图是一个或很多个二分图,即没有奇环

    则一条边可以成为答案,当且仅当自己在所有奇环的交上且不在偶环上。

    考虑建出dfs树,那么返祖边一定在环上。

    把边下放到点上,考虑处理出返祖边覆盖的两个端点直接的路径,这些点都在这个环上,按照这个环的奇偶打一个差分上去即可。

    但是这样只考虑了只有一个返祖边在环上的情况,返祖边在两个环以上的环我们没有处理

    考虑分类讨论

    • 若两个有交返祖边奇偶不同,少处理的一个环是奇环,无论是大奇环还是小奇环都没有影响
    • 若均为奇环,那么奇环的交不在大偶环上,也没有影响
    • 若均为偶环,显然都不会成为答案

    但是我们还需要考虑非树边

    如果仅有一个奇环,那么奇环上的边都是答案

    否则两个有交的非树边奇环一定构成了一个大偶环,使非树边不成为答案。


    Code:

    #include <cstdio>
    #include <cctype>
    #include <map>
    #include <algorithm>
    #define ll long long
    using std::max;
    using std::min;
    const int SIZE=1<<21;
    char ibuf[SIZE],*iS,*iT;
    //#define gc() (iS==iT?(iT=(iS=ibuf)+fread(ibuf,1,SIZE,stdin),iS==iT?EOF:*iS++):*iS++)
    #define gc() getchar()
    template <class T>
    void read(T &x)
    {
    	x=0;char c=gc();
    	while(!isdigit(c)) c=gc();
    	while(isdigit(c)) x=x*10+c-'0',c=gc();
    }
    const int N=2e5+10;
    int head[N],to[N<<2],Next[N<<2],cnt=1;
    void add(int u,int v)
    {
    	to[++cnt]=v,Next[cnt]=head[u],head[u]=cnt;
    }
    int n,m,dep[N],jh[N],oh[N],vis[N<<2],jhc,ohc,ans;
    void dfs(int now)
    {
    	for(int v,i=head[now];i;i=Next[i])
    	{
    	    if(vis[i^1]) continue;
    	    v=to[i];
    	    vis[i]=1;
    		if(!dep[v])
    		{
    			dep[v]=dep[now]+1;
    			dfs(v);
    			jh[now]+=jh[v];
    			oh[now]+=oh[v];
    		}
    		else if((dep[now]-dep[v])&1)
    			++ohc,++oh[now],--oh[v];
    		else
    			++jhc,++jh[now],--jh[v];
    	}
    }
    int main()
    {
    	read(n),read(m);
    	for(int u,v,i=1;i<=m;i++)
        {
            read(u),read(v);
            add(u,v),add(v,u);
        }
    	for(int i=1;i<=n;i++)
    		if(!dep[i])
    			dep[i]=1,dfs(i);
    	for(int i=1;i<=n;i++)
    	{
    	    if(dep[i]==1) continue;
    		if(!jhc) ans+=oh[i]==0;
    		else if(jhc==1) ans+=jh[i]&&(oh[i]==0);
    		else ans+=(jh[i]==jhc)&&(oh[i]==0);
    	}
    	printf("%d
    ",ans+(jhc==1));
    	return 0;
    }
    

    2019.6.26

  • 相关阅读:
    Can't remove netstandard folder from output path (.net standard)
    website项目的reference问题
    The type exists in both DLLs
    git常用配置
    Map dependencies with code maps
    How to check HTML version of any website
    Bootstrap UI 编辑器
    网上职位要求对照
    Use of implicitly declared global variable
    ResolveUrl in external JavaScript file in asp.net project
  • 原文地址:https://www.cnblogs.com/butterflydew/p/11090715.html
Copyright © 2011-2022 走看看