[USACO1.3]虫洞wormhole 暴力 (第一章完结)

来源:互联网 发布:艾琳和后羿的伤害数据 编辑:程序博客网 时间:2024/06/05 06:33

题意:

给出n个虫洞,问有多少种配对使从某一列第一行出发会陷入环。

 

暴力配对暴力走。


#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;struct node{int x,y;}a[20];int b[20],visit[20];int n,ans=0;bool cmp(node pp,node qq){return pp.y==qq.y?pp.x<qq.x:pp.y<qq.y;}int walk(int xx,int yy){    for (int i=0;i<n;i++)        if (a[i].y==yy && a[i].x>xx)        {            if (!visit[i])                {visit[i]=1;return walk(a[b[i]].x,a[b[i]].y);}            else                return 1;            break;        }    return 0;}void pei(int o){    if (o==n-1)    {        for (int i=0;i<n;i++)        {            memset(visit,0,sizeof(visit));            visit[i]=1;            if (walk(a[b[i]].x,a[b[i]].y))            {                ans++;                break;            }        }        return;    }    if (b[o]==-1)    {        for (int j=o+1;j<n;j++)        {            if (b[j]==-1)            {                b[o]=j;b[j]=o;                pei(o+1);                b[o]=-1;b[j]=-1;            }        }    }    else pei(o+1);}int main(){    scanf("%d",&n);    memset(b,-1,sizeof(b));    for (int i=0;i<n;i++)        scanf("%d%d",&a[i].x,&a[i].y);    sort(a,a+n,cmp);    pei(0);    printf("%d\n",ans);    return 0;}


原创粉丝点击