poj2513——Colored Sticks
2010-11-09 10:58
309 查看
tire树+并查集+欧拉路
将木棍端点颜色看做顶点,木棍本身作为边,利用tire树求其"顶点",用并查集来判断是否连通,而欧拉路的判断,在连通的基础上,则是每个点的度数为偶数,或者为度奇数的点只有2个!
ps:这道题为了省一个变量,然后就忘了初始化,然后就杯具了。。。不断wa
将木棍端点颜色看做顶点,木棍本身作为边,利用tire树求其"顶点",用并查集来判断是否连通,而欧拉路的判断,在连通的基础上,则是每个点的度数为偶数,或者为度奇数的点只有2个!
ps:这道题为了省一个变量,然后就忘了初始化,然后就杯具了。。。不断wa
#include<string.h> #include<stdio.h> #include<stdlib.h> #define maxn 250005*2 typedef struct node { int h; struct node * next[26]; }*tree; tree tt; int cnt,pre[maxn]; int num[maxn]; int getv(char a[]) { int i=0,k; tree p,newnode; p=tt; while(a[i]) { k=a[i]-'a'; if(p->next [k]==NULL) { newnode=(tree)malloc(sizeof(node)); memset(newnode->next ,NULL,sizeof(newnode->next)); newnode->h =-1; p->next[k] =newnode; } p=p->next[k] ; i++; } if(p->h ==-1) p->h =cnt++; return p->h; } int find(int k1) { int x=k1; while(x!=pre[x]) x=pre[x]; return x; } void uion(int f1,int f2) { if(f1<f2) pre[f2]=f1; else pre[f1]=f2; } int main() { int i,k1,k2,f1,f2; char a[12],b[12]; for(i=0;i<maxn;i++) pre[i]=i; cnt=0; memset(num,0,sizeof(num)); tt=(tree)malloc(sizeof(node)); memset(tt->next ,NULL,sizeof(tt->next )); tt->h =-1; while(scanf("%s%s",a,b)!=EOF) { k1=getv(a); k2=getv(b); num[k1]++; num[k2]++; f1=find(k1);f2=find(k2); if(f1!=f2) uion(f1,f2); } f1=0;//脑残的,这边应该重新设个变量的,以防止未初始化 for(i=0;i<cnt;i++) if(num[i]%2!=0) f1++; bool flag=false; f2=find(0); for(i=1;i<cnt;i++) if(find(i)!=f2) flag=true; if(f1>2) { printf("Impossible/n"); return 0; } else if(flag) { printf("Impossible/n"); return 0; } else { printf("Possible/n"); return 0; } }
相关文章推荐
- POJ 2513 Colored Sticks(Trie)
- poj 2513 Colored Sticks
- poj 2513 colored sticks
- POJ 2513 Colored Sticks
- POJ_2513_Colored Sticks(欧拉路+字典树)
- Poj 2513 Colored Sticks
- [欧拉回路] poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks 并查集 + 字典树 + 欧拉回路
- POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
- poj 2513 Colored Sticks(trie+并查集+欧拉通路)
- poj 2513 Colored Sticks【trie+并查集+欧拉回路】
- POJ 2513 Colored Sticks
- poj_2513 Colored Sticks(字典树+并查集+欧拉通路)
- POJ 2513 Colored Sticks
- poj - 2513 Colored Sticks
- poj 2513 Colored Sticks 欧拉路
- (字典树+欧拉通路) poj 2513 Colored Sticks
- POJ 2513 Colored Sticks(欧拉回路判断+字典树Trie+并查集)
- POJ 2513 Colored Sticks