POJ(2942)(Knights of the Round Table )
1280 ワード
リンク:https://vjudge.net/problem/POJ-2942構想:本来は複数のアルゴリズムの総合テンプレート問題であるが、私はよく知らないのでテンプレートを熟知している.多分tarjanで二連通成分を求めてから、二分図を利用して各成分を染色し、成功した染色(必ず奇輪)の頂点マークを持ってきて、最後にマークされていない点は会議コードに参加できない.
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 1001;
vector G[1001],bcc[1001];
int odd[1001],color[1001];
int dfn[1001];
int low[1001];
int iscut[1001];
int bccno[1001];
int ntime;
int n,m,bcc_cnt;
struct edge{
int u,v;
edge(){}
edge(int uu,int vv):u(uu),v(vv){}
};
deque edges;
//tarjan
void tarjan(int u,int f){
int i,j,k;
int child = 0;
//low ( low , !),dfn , dfn low
low[u] = dfn[u] = ++ntime;
for(i=0;i