传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2079
我们可以先考虑一下树的情况,把树按照深度奇偶染色一定符合题意
图一定有生成树,所以点数>1的联通块一定有解
那么就是判断有没有一个联通块只有一个结点
Code:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int getint(){
int res=0;char c=getchar();
while(!isdigit(c))c=getchar();
while(isdigit(c))res=res*10+c-'0',c=getchar();
return res;
}
int in[200001];
int main(){
n=getint();m=getint();
while(m--){
int x;
n-=!in[x=getint()];
in[x]=1;
n-=!in[x=getint()];
in[x]=1;
}puts(!n?"TAK":"NIE");
return 0;
}