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