hdu 1116 Play on Words
我的思路:
用俩个数组分别记录出现过的节点的入度和出度,这样只有一个字母的入度比出度大1,一个字母的出度比入度大1,或者是所有有字母的出度和入度都一样,他就是欧拉路
但这样还差了一个联通性的判断 于是我用了一个辅助数组 f[] 用并查集的方式判断是否连通
代码:
#include<iostream>
#include<string>
using namespace std;
int f[30],c[30],r[30];
char s[1005];
int find(int x)
{ if(x==f[x]) return f[x]; f[x]=find(f[x]); return f[x];
}
void Union(int x,int y)
{ int a=find(x); int b=find(y); if(a==b) return ; f[a]=b; return ;
} void init()
{for(int i=0;i<26;i++)f[i]=i;memset(c,0,sizeof(c));memset(r,0,sizeof(r));
}
int main()
{int i,j,cas,n;cin>>cas;while(cas--){init();cin>>n;for(i=0;i<n;i++){cin>>s;int a=s[0]-'a';int b=s[strlen(s)-1]-'a';Union(a,b);r[b]++;c[a]++;//累加 节点的入度和出度}int count=0;for(i=0;i<26;i++)//计算根节点数目{if(i==find(i)&&(r[i]||c[i]))count++;}if(count!=1)//判断是否连通{cout<<"The door cannot be opened."<<endl;continue;}int p1=0,p2=0;for(i=0;i<26;i++){if(c[i]>r[i])p1+=c[i]-r[i];if(r[i]>c[i])p2+=r[i]-c[i];}if((p1==0&&p2==0)||(p1==1&&p2==1))cout<<"Ordering is possible."<<endl;else cout<<"The door cannot be opened."<<endl;}return 0;
}
转载于:https://www.cnblogs.com/nanke/archive/2011/08/03/2125782.html
hdu 1116 Play on Words相关推荐
- hdu 1116 Play on Words(欧拉通路)
题意:给出给出n个单词,要求判断这些单词能否接龙,规则像成语接龙一样,就是当前单词的尾字母为下一个单词的首字母. 思路:看着像是欧拉通路相关的题目,但是重点就在于怎么抽象出来. 刚开始想了半天没想明白 ...
- hdu 1116 欧拉回路 并查集 一组字符串能否首尾相连成一个字符串
主要是欧拉回路的基础知识,用并查集加工处理 注意欧拉回路和并查集的细节判断 不能粘贴复制,一定要理解之后再敲一遍代码,否则浪费更多的时间 #include <stdio.h> #inclu ...
- hdu 1116 欧拉路
一个有向图存在欧拉路: 在有向图中,如果图是弱连通的,并且图中除开两个顶点,其他所有顶点的入度等于出度,并且这两个点中,一个点入度比出度多1,另一个点出度比入度少1,那么该图存在欧拉路,这是个充要条件 ...
- 【HDU - 1116】【POJ - 1386】Play on Words(判断半欧拉图,欧拉通路)
题干: Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has ...
- hdu 1116 Play on Words
用深搜超时. 后来用欧拉回路. union set 原来是并查集 ,是种数据结构,我看英文知道有这个union set 刚开始还以为是种算法. union set code: int height[M ...
- hdu 1116 并查集和欧拉路径
---恢复内容开始--- 把它看成是一个图 只是需要欧拉路径就可以了 首尾能连成一条线即可 如果要判断这个图是否连通 得用并查集 在hrbust oj里面看答案学到的方法 不用各种for循环套着判断能 ...
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- [转] HDU 题目分类
转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...
最新文章
- android opencv 书籍,opencv android
- 本质矩阵svd分解_SVD推荐系统
- Qt文档阅读笔记-Broadcast Receiver Example解析
- Python高级——mini_web框架(实现web框架接口,数据库连接)
- 程序闪退_苹果APP日常使用时一直闪退怎么办?
- 更改日期为英文_修改3000个日期格式,不用熬夜到天亮,3秒就完事儿
- linux进程及作业管理实验,Linux 进程及作业管理(一)
- git 常用命令_Git基本常用命令
- quick-cocos2dx 组件管理器
- 电容或电感的电压_低成本电容电感测量电路
- 海马玩android模拟器哪个好用,主流安卓模拟器评测:叶子猪海马玩表现突出
- 记一次网站服务器搬迁实录
- 一个windows右键关联工具
- 80004005错误代码_80004005错误代码怎么回事_安装软件错误代码0×80004005如何解决...
- B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...
- Matplotlib颜色、线宽、线型、透明度、点型
- AT32F437基于LVGL的桌面显示案例
- google::protobuf::Closure::Run
- 2021年企业十大科技趋势预测
- PPT的三种抠图方法-演示