hdu3172 Virtual Friends
来源:互联网 发布:简单python脚本实例 编辑:程序博客网 时间:2024/05/21 17:05
并查集题目
用map映射的代码跑了1100多ms,而采用trie树保存人名的代码仅跑了203ms。
采用map映射
#include<iostream>#include<cstdio>#include<string>#include<map>using namespace std;int root[10010],sign[10010];map<string,int>list;int find(int c){if(root[c]!=c)root[c]=find(root[c]);return root[c];}void check(int a,int b){int ra=find(a);int rb=find(b);if(ra!=rb){root[ra]=rb;sign[rb]+=sign[ra];}}int main(){string n1,n2;int n,m;int len;while(scanf("%d",&n)!=EOF){while(n--){list.clear(); //貌似不加这句就WAscanf("%d",&m);if(m==0){printf("0\n");continue;}len=0;while(m--){cin>>n1>>n2;if(list.find(n1)==list.end()){root[len]=len;sign[len]=1;list[n1]=len++;}if(list.find(n2)==list.end()){root[len]=len;sign[len]=1;list[n2]=len++;}check(list[n1],list[n2]);printf("%d\n",sign[find(list[n1])]); //输出不能是cout,否则TLE,汗!}}}return 0;}
采用trie树
#include<iostream>#include<cstdio>#include<string>using namespace std;int roott[10010],sign[10010];int len;struct node{ node *next[60]; int flag; node(){ memset(next,NULL,sizeof(next)); flag=0; }};int find(int c){ if(roott[c]!=c) roott[c]=find(roott[c]); return roott[c];}void check(int a,int b){ int ra=find(a); int rb=find(b); if(ra!=rb){ roott[ra]=rb; sign[rb]+=sign[ra]; }}int insert(char *cur,node *root){ node *p=root; int i=0; while(cur[i]){ int index=cur[i]-'A'; if(p->next[index]==NULL) p->next[index]=new node(); p=p->next[index]; i++; } if(p->flag!=0) return p->flag; else{ p->flag=len; return 0; }}int main(){ char n1[22],n2[22]; int n,m; while(scanf("%d",&n)!=EOF){ while(n--){ node *root=new node; scanf("%d",&m); if(m==0){ printf("0\n"); continue; } len=1; while(m--){ cin>>n1>>n2; if(insert(n1,root)==0){ roott[len]=len; sign[len]=1; len++; } if(insert(n2,root)==0){ roott[len]=len; sign[len]=1; len++; } //cout<<insert(n1,root)<<insert(n2,root)<<endl; check(insert(n1,root),insert(n2,root)); printf("%d\n",sign[find(insert(n1,root))]); } } } return 0;}
- HDU3172--Virtual Friends
- hdu3172 Virtual Friends
- hdu3172 Virtual Friends
- HDU3172 Virtual Friends
- hdu3172 Virtual Friends
- HDU3172 Virtual Friends
- hdu3172 Virtual Friends
- HDU3172---Virtual Friends
- hdu3172:Virtual Friends
- HDU3172-Virtual Friends
- HDU3172 UVA11503 Virtual Friends
- HDU3172-Virtual Friends
- HDU3172 Virtual Friends 并查集
- Hdu3172 - Virtual Friends - 并查集
- hdu3172 Virtual Friends--并查集
- hdu3172 Virtual Friends 并查集 map映射
- hdu3172 Virtual Friends 带权并查集
- 带权并查集:HDU3172-Virtual Friends
- 牛人写的设计游戏服务器
- C以及Objective-C测试题(下)
- Ignatius and the Princess III(hdu1028母函数)
- python 简单文件操作 修改文件指定行
- The CAP FAQ
- hdu3172 Virtual Friends
- Android开发之Dialog
- C# Socket编程 同步以及异步通信
- vi/vim常用命令,vi/vim正则表达式
- 第四部分 个人理财风险防范3.金融消费也要维权
- 妈妈 母亲节快乐!
- 【数字题3】最大重叠子区间
- hibernate集合映射
- web服务器对url中的相对路径的处理("./", "//","../")