Colored Sticks--POJ 2513
2010-07-22 21:43
295 查看
1、解题思路:字典树,并查集,欧拉通路。
2、注意事项:字典树的插入;并查集与DFS的结合;欧拉回路的判断。
3、实现方法:
2、注意事项:字典树的插入;并查集与DFS的结合;欧拉回路的判断。
3、实现方法:
#include<iostream> #include<map> #include<string> using namespace std; //用邻接表表示连接关系 struct Edge { int v; Edge *nxt; }; Edge *head[1000010]; Edge Arr[1000010]; struct Trie { bool IsStr; int Id; Trie *nxt[26]; }; Trie root,temp[1000000]; int pos,cnt,num; bool visite[500010]; //trie树的插入 int Insert(char str[]) { int len=strlen(str); Trie *Current=&root; for(int i=0;i<len;i++) { if(Current->nxt[str[i]-'a']==NULL) Current->nxt[str[i]-'a']=&temp[pos++]; Current=Current->nxt[str[i]-'a']; } if(Current->IsStr) return Current->Id; Current->IsStr=true; Current->Id=++cnt; return Current->Id; } void DFS(int v) { Edge *w=head[v]->nxt; visite[v]=true; while(w) { if(visite[w->v]==false) DFS(w->v); w=w->nxt; } } bool Judge() { int x=0; for(int i=1;i<=cnt;i++) { if(visite[i]==false) { DFS(i); x++; } if(x>1) return false; } return true; } void Init() { char str1[11],str2[11]; int A1,A2; while(scanf("%s %s",str1,str2)!=EOF) { A1=Insert(str1); A2=Insert(str2); if(head[A1]==NULL) head[A1]=&Arr[num++]; if(head[A2]==NULL) head[A2]=&Arr[num++]; Edge *p=head[A1],*q; while(p) { q=p;p=p->nxt; } q->nxt=&Arr[num++]; q->nxt->v=A2; Edge *r=head[A2],*w; while(r) { w=r;r=r->nxt; } w->nxt=&Arr[num++]; w->nxt->v=A1; } } int main() { int i,s,ans=0; Init(); if(cnt==0) cout<<"Possible"<<endl; else { if(Judge()) { for(i=1;i<=cnt;i++) { Edge *p=head[i]; s=-1; while(p) { s++; p=p->nxt; } if(s%2==1) ans++; } if(ans==0||ans==2) cout<<"Possible"<<endl; else cout<<"Impossible"<<endl; } else cout<<"Impossible"<<endl; } return 0; }
相关文章推荐
- Colored Sticks(POJ 2513)
- POJ 2513 Colored Sticks (排序+并查集判断欧拉路)
- POJ 2513 Colored Sticks(Trie)
- poj 2513 Colored Sticks (trie 树)
- poj 2513 Colored Sticks
- POJ Colored Sticks 2513(字典树+并查集+欧拉回路)
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks(字典树+欧拉路径)
- POJ 2513 Colored Sticks
- POJ Colored Sticks(2513) -trie树&欧拉回路
- POJ2513-Colored Sticks
- POJ 2513 Colored Sticks 欧拉回路+trie树
- POJ2513-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
- Colored Sticks(POJ--2513