博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1116
阅读量:6118 次
发布时间:2019-06-21

本文共 2150 字,大约阅读时间需要 7 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=1116

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int N=30; 8 int father[N],vis[N]; 9 int find(int x)//查找根10 {11 if(father[x]!=x)12 father[x]=find(father[x]);13 return father[x];14 }15 void make(int a,int b)//合并操作16 {17 int f1=find(a);18 int f2=find(b);19 if(f1!=f2)20 father[f1]=f2;21 }22 23 int main()24 {25 //freopen("in.txt","r",stdin);26 int t;27 cin>>t;28 while(t--)29 {30 int out[N],in[N],p[N];31 memset(in,0,sizeof(in));32 memset(out,0,sizeof(out));33 memset(vis,0,sizeof(vis));34 int n;35 for(int i=0;i<26;i++)36 father[i]=i;//数组赋初值37 cin >> n;38 while(n--)39 {40 char str[1005];41 cin>>str;42 int a=str[0]-'a';43 int b=str[strlen(str)-1]-'a';44 out[a]++;45 in[b]++;46 make(a,b);//合并操作47 vis[a]=vis[b]=1;48 }49 for(int i=0;i<26;i++)50 father[i]=find(i);//寻找每个点的根节点51 int cnt=0;52 for(int i=0;i<26;i++)53 {54 if(vis[i] && father[i]==i)//确定有几颗树55 cnt++;56 }57 if(cnt>1)58 {59 printf("The door cannot be opened.\n");60 continue;61 }62 int j=0;63 for(int i=0;i<26;i++)64 {65 if(vis[i] && out[i]!=in[i])//找起点和终点66 p[j++]=i;67 }68 if(j==0)//环69 {70 printf("Ordering is possible.\n");71 continue;72 }73 if(j==2 && ((out[p[0]]-in[p[0]]==1 && in[p[1]]-out[p[1]]==1 ) ||74 (in[p[0]]-out[p[0]]==1 && out[p[1]]-in[p[1]]==1 ) ) )75 {
//起点和终点的判断76 printf("Ordering is possible.\n");77 continue;78 }79 printf("The door cannot be opened.\n");80 }81 return 0;82 }

 

转载于:https://www.cnblogs.com/xuesen1995/p/4501601.html

你可能感兴趣的文章
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
多线程条件
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>