POJ 1386 有向图的欧拉路径
2016-07-12 16:26
363 查看
题目大意:
多case,每个case给出n个单词,求出这些单词能否排成一排,使得单词首尾相连(也就是前一个单词末字母和后一个单词的首字母相同)
分析:
把每个单词的首字母和末字母连一条有向边,然后在有向图上求是否存在一条欧拉路径。
怎么求呢??
首先要满足图是联通的~(≧▽≦)/~
然后就要满足有1个或0个点出度比入度大一,有1个或0个点入度比出度大一
代码如下:
by >o< neighthorn
多case,每个case给出n个单词,求出这些单词能否排成一排,使得单词首尾相连(也就是前一个单词末字母和后一个单词的首字母相同)
分析:
把每个单词的首字母和末字母连一条有向边,然后在有向图上求是否存在一条欧拉路径。
怎么求呢??
首先要满足图是联通的~(≧▽≦)/~
然后就要满足有1个或0个点出度比入度大一,有1个或0个点入度比出度大一
代码如下:
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std; const int maxn=100000+5; int cas,n,mp[30][30],in[30],out[30],s; char str[1000+5]; inline int read(){ char ch=getchar(); int f=1,x=0; while(!(ch>='0'&&ch<='9')){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return f*x; } void dfs(int root){ for(int i=0;i<26;i++) if(mp[root][i]) mp[root][i]=0,dfs(i); } bool check(){ int la=0,lala=0,lalala=0,k; for(int i=0;i<26;i++){ if(in[i]-out[i]==1) la++; if(out[i]-in[i]==1) lala++,s=i; if(out[i]==in[i]&&in[i]!=0) k=i; if(abs(out[i]-in[i])>1) lalala++; } if(la>1||lala>1||lalala>0) return false; if(lala==0) s=k;//可能不存在起点 return true; } signed main(void){ cas=read(); while(cas--){ n=read(); memset(in,0,sizeof(in)),memset(out,0,sizeof(out)),memset(mp,0,sizeof(mp)); for(int i=1;i<=n;i++) scanf("%s",str),mp[str[0]-'a'][str[strlen(str)-1]-'a']=1,in[str[strlen(str)-1]-'a']++,out[str[0]-'a']++; int flag=0; if(check()){ flag=true; dfs(s); for(int i=0;i<26;i++) for(int j=0;j<26;j++) if(mp[i][j]){ flag=false; break; } } if(flag) cout<<"Ordering is possible."<<endl; else cout<<"The door cannot be opened."<<endl; } return 0; }
by >o< neighthorn
相关文章推荐
- [iOS item-services分发] 企业级账户分发-个人练手记录
- JPA学习笔记(14)——查询缓存
- Android笔记--简单的自定义View之组合模式
- 关于bootstrap 弹窗——点击空白处禁止关闭弹窗
- 连载:面向对象葵花宝典:思想、技巧与实践(3) - 面向过程 vs 面向对象
- 332. Reconstruct Itinerary
- easyui datagrid combox 与 bootstrap 共用时,bootstrap.min.js 出现JS异常
- 【NOIP2016模拟7.12】游戏
- JPA学习笔记(13)——JPQL
- Log4j.properties配置详解
- 替换空格
- 字符串运用-密码截取,字符串中的最长的回文串
- Spring Batch
- linux脚本后台运行
- The project: project which is referenced by the classpath, does not exist.
- Myeclipse Templates详解(一) —— Java模板基础
- 从艾优尼之死,看Freeme OS的深远价值
- 同步,异步和阻塞,非阻塞
- 嵌入式学习第二天
- Very deep convolutional networks for large-scale image recognition