比赛 “Asm.Def战记之夏威夷”杯 评测结果 AAAAWWWEET
题目名称 Asm.Def的报告 最终得分 40
用户昵称 devil 运行时间 2.307 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2015-11-06 09:20:04
显示代码纯文本
#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <stack>
#include <vector>
#include <map>
#include <queue>
#include <ctime>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int uint;
const int inf=1061109567;
const int maxn=1010;
const int maxm=110;
const int mod=1000000007;
const double pi=3.14;

int n,m;
int a[maxn];
int b[maxn];
int vis[maxn];

bool judge()
{
    bool flag;
    for(int i=1;i<=m;i++)
    {
        flag=false;
        if(!flag&&a[i]>0)
        {
            if(vis[a[i]]==1) flag=true;
        }
        if(!flag&&a[i]<0)
        {
            if(vis[-a[i]]==0) flag=true;
        }
        if(!flag&&b[i]>0)
        {
            if(vis[b[i]]==1) flag=true;
        }
        if(!flag&&b[i]<0)
        {
            if(vis[-b[i]]==0) flag=true;
        }
        if(!flag) return false;
    }
    return true;
}

bool dfs(int pos)
{
    if(pos==n+1)
    {
        if(judge())
        {
            for(int i=1;i<=n;i++)
            {
                printf("%d ",vis[i]);
            }
            printf("\n");return true;
        }
        return false;
    }
    vis[pos]=1;
    if(dfs(pos+1)) return true;
    vis[pos]=0;
    if(dfs(pos+1)) return true;
    return false;
}

int main()
{
    freopen("asm_report.in","r",stdin);
    freopen("asm_report.out","w",stdout);
    //clock_t st=clock();
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]);
    dfs(1);
    //clock_t ed=clock();
    //printf("\nTime used : %.5lf Ms\n",double(ed-st)/CLOCKS_PER_SEC);
    return 0;
}