[USACO1.3]蟲洞wormhole 暴力 (第一章完結)
阿新 • • 發佈:2019-02-08
題意:
給出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; }