标签:ch noip 待补 res ll namespace bound 63 define
A. 电压机制
题目可以迅速转化为:删掉一条边使得图变为一个二分图.
然而这并没有什么用..
另外可以发现我们必须删掉一条边,这条边满足是所有奇环的公共边,而且不能是偶环的边.
所以可以考虑差分实现.
A_code
#include<bits/stdc++.h>
using namespace std;
namespace BSS {
#define ll long long int
#define ull unsigned ll
#define lf double
#define lbt(x) (x&(-x))
#define mp(x,y) make_pair(x,y)
#define lb lower_bound
#define ub upper_bound
#define Fill(x,y) memset(x,y,sizeof x)
#define Copy(x,y) memcpy(x,y,sizeof x)
#define File(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout)
inline ll read() {
ll res=0; bool cit=1; char ch;
while(!isdigit(ch=getchar())) if(ch=='-') cit=0;
while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
return cit?res:-res;
}
} using namespace BSS;
const ll N=5e5+21;
ll m,n,ans,ts=1,cnt,alls;
ll head[N],odd[N],cf[N],dep[N];
struct I { ll u,v,nxt,vis; } e[N<<2];
inline void add(ll u,ll v){
e[++ts].u=u,e[ts].v=v,e[ts].nxt=head[u],
head[u]=ts;
}
void dfs(ll u,ll depth){
dep[u]=depth;
for(int i=head[u];i;i=e[i].nxt){
if(e[i].vis) continue;
e[i].vis=1,e[i^1].vis=1;
if(dep[e[i].v]){
ll len=dep[u]-dep[e[i].v]+1;
if(len&1){
odd[i]++,odd[i^1]++;
cf[e[i].v]--; alls++;
}
else{
odd[i]--,odd[i^1]--;
cf[e[i].v]++;
}
cf[u]+=odd[i];
}
else{
dfs(e[i].v,depth+1);
odd[i]+=cf[e[i].v],odd[i^1]+=cf[e[i].v];
cf[u]+=cf[e[i].v];
}
}
}
signed main(){
File(a);
n=read(),m=read(); ll u,v;
for(int i=1;i<=m;i++){
u=read(),v=read();
add(u,v),add(v,u);
}
dfs(1,1);
for(int i=2;i<=ts;i+=2) ans+=(odd[i]==alls);
printf("%lld\n",ans),exit(0);
}
B. 括号密码
C. 排列
D. B关系
标签:ch,noip,待补,res,ll,namespace,bound,63,define 来源: https://www.cnblogs.com/AaMuXiiiiii/p/15349752.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。