cjb-poi2010guilds

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
#include <cstdio>
#include <iostream>
#include <cmath>
#include <vector>
#define rep(i,n) for(int i=1;i<=n;++i)
using namespace std;
int n,m;
int col[210000];
vector<int> g[210000];
int flag;
void dfs(int x,int c)
{
    col[x]=c;
    for(auto p:g[x])
        if (col[p]==-1)dfs(p,c^1);
}
int main()
{
    cin>>n>>m;
    rep(i,n)g[i].clear();
    rep(i,m)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    rep(i,n)col[i]=-1;
    for(int i=1;i<=n;i++)
        if (col[i]==-1)dfs(i,0);
    flag=1;
    rep(i,n)flag&=(g[i].size()>0);
    if (!flag)
    {
        puts("NIE");
        return 0;
    }
    puts("TAK");
    rep(i,n)puts(col[i]?"K":"S");
}
}}}
#include <cstdio>
#include <iostream>
#include <cmath>
#include <vector>
#define rep(i,n) for(int i=1;i<=n;++i)
using namespace std;
int n,m;
int col[210000];
vector<int> g[210000];
int flag;
void dfs(int x,int c)
{
    col[x]=c;
    for(auto p:g[x])
        if (col[p]==-1)dfs(p,c^1);
}
int main()
{
    cin>>n>>m;
    rep(i,n)g[i].clear();
    rep(i,m)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    rep(i,n)col[i]=-1;
    for(int i=1;i<=n;i++)
        if (col[i]==-1)dfs(i,0);
    flag=1;
    rep(i,n)flag&=(g[i].size()>0);
    if (!flag)
    {
        puts("NIE");
        return 0;
    }
    puts("TAK");
    rep(i,n)puts(col[i]?"K":"S");
}