HDU 1116 Play on Words(有向图欧拉路)
来源:互联网 发布:python 字典嵌套 编辑:程序博客网 时间:2024/05/16 07:31
题目链接:Click here~~
题意:
给 n 个词语,问是否能够词语接龙。
解题思路:
先用并查集找连通分量,然后根据结论来吧。
#include <map>#include <vector>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;namespace UFset{ const int N = 27; int pre[N]; void init(){ memset(pre,-1,sizeof(pre)); } int root(int x){ return pre[x] == -1 ? x : pre[x] = root(pre[x]); } bool gather(int a,int b){ int r1 = root(a); int r2 = root(b); if(r1 == r2) return false; else pre[r1] = r2; return true; }}using namespace UFset;int ind[N],outd[N];bool EulerTour(int n) //direct{ int rt = -1; for(int i=1;i<=n;i++) if(ind[i] || outd[i]) { if(rt == -1) rt = root(i); else if(rt != root(i)) return false; } vector<int> tmp; for(int i=1;i<=n;i++) if(ind[i] != outd[i]) tmp.push_back(outd[i]-ind[i]); return (int)tmp.size() == 0 || (int)tmp.size() == 2 && tmp[0] * tmp[1] == -1;}char word[1005];int main(){ int n = 26,m,T; scanf("%d",&T); while(T--) { init(); scanf("%d",&m); memset(ind,0,sizeof(ind)); memset(outd,0,sizeof(outd)); for(int i=0;i<m;i++) { scanf("%s",word); int u = word[0] - 'a' + 1; int v = word[strlen(word)-1] - 'a' + 1; gather(u,v); ++outd[u] , ++ind[v]; } puts(EulerTour(n)?"Ordering is possible.":"The door cannot be opened."); } return 0;}
- HDU 1116 Play on Words(有向图欧拉路)
- HDU 1116 Play on Words(欧拉路径(有向图)+并查集)
- HDU 1116 Play on Words 有向图欧拉回路的判断
- hdu 1116 Play on Words(欧拉图)
- hdu 1116 Play on Words
- Hdu-1116 Play on Words
- hdu 1116 Play on Words
- HDU 1116 Play on Words
- HDU 1116 Play on Words
- hdu 1116 Play on Words
- hdu 1116 Play on Words
- hdu 1116 Play on Words
- hdu 1116 Play on Words
- HDU - 1116 Play on Words
- HDU 1116 Play on Words
- HDU 1116 Play on Words
- HDU 1116 Play on Words
- Hdu-1116 Play on Words
- DOM动态添加HTML节点 appendChild、removeChild
- Opencv cvCircle函数
- ssl介绍以及双向认证和单向认证原理 (转)
- C shell编程笔记
- Java容器集合学习心得
- HDU 1116 Play on Words(有向图欧拉路)
- Mercurial项目管理实践
- 在VMWare Workstation8.0上使用ubuntu11安装和配置Hadoop群集环境02_配置虚拟机之间SSH无密码登录
- sleep 和 wait的区别
- ARM寻址方式及相关指令汇总
- linux内核中的copy_to_user和copy_from_user(一)
- post和get请求方式的区别
- makefile 笔记
- xendesktop 基于ip地址或主机名分配桌面