暴力AC
查看原帖
暴力AC
591179
huangyuxaing楼主2023/5/20 21:01
#include<bits/stdc++.h>
using namespace std;
const int M=1e6+7;
int n,m,a,b,p[M],eid,s[M],c,choose[M];
struct node{
	int u,v,next;
}e[M];
void insert(int u,int v){
	e[++eid].u=u;e[eid].v=v;
	e[eid].next=p[u];p[u]=eid;
}
bool dfs(int u){
	if(choose[((u%2)?u+1:u-1)])return false;
	if(choose[u])return true;
	s[c++]=u;choose[u]=true;
	for(int i=p[u];i;i=e[i].next)if(!dfs(e[i].v))return false;
	return true;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&a,&b);
		insert(a,((b%2)?b+1:b-1));
		insert(b,((a%2)?a+1:a-1));
	}
	for(int i=1;i<=2*n;i+=2){
		if(!choose[i]&&!choose[i+1]){
			c=0;
			if(!dfs(i)){
				while(c>0)choose[s[--c]]=false;
				if(!dfs(i+1)){printf("NIE\n");return 0;}
			}
		}
	}
	for(int i=1;i<=2*n;i++)if(choose[i])printf("%d\n",i);
	return 0;
}

在机房里写了1个小时tarjan优化版本没调出来索性贴了个暴力上去还AC了

2023/5/20 21:01
加载中...