hdu1116 欧拉回路
//Accepted 248 KB 125 ms
//欧拉回路
//以26个字母为定点,一个单词为从首字母到末尾字母的一条边
//下面就是有向图判断欧拉回路
//连通+节点入度和==出度和 或者 存在一对节点一个入度比出度大1,一个小1
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
;
int a[imax_n][imax_n];
bool used[imax_n];
bool vis[imax_n];
int cnt_in[imax_n],cnt_out[imax_n];
int n;
];
queue<int >q;
void bfs(int s)
{
while (!q.empty()) q.pop();
//if (used[s]==0) return 0;
q.push(s);
vis[s]=;
while (!q.empty())
{
int x=q.front();
q.pop();
;i<imax_n;i++)
{
&& !vis[i] && a[x][i])
{
vis[i]=;
q.push(i);
}
}
}
}
bool judge()
{
int flag;
;i<=;i++)
{
memset(vis,,sizeof(vis));
bfs(i);
flag=;
;j<=;j++)
&& !vis[j]) flag=;
) ;
}
;
}
bool slove()
{
int p,ne;
p=ne=;
;i<=;i++)
{
int t=cnt_in[i]-cnt_out[i];
) continue;
)
{
p++;
) ;
continue;
}
)
{
ne++;
) ;
continue;
}
;
}
&& ne== || p== && ne==)) ;
;
}
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
int x,y;
memset(a,,sizeof(a));
memset(used,,sizeof(used));
memset(cnt_in,,sizeof(cnt_in));
memset(cnt_out,,sizeof(cnt_out));
;i<n;i++)
{
scanf("%s",s);
int l=strlen(s);
x=s[]-;
y=s[l-]-;
used[s[]-]=true;
used[s[l-]-]=true;
a[x][y]=;
cnt_out[x]++;
cnt_in[y]++;
}
&& slove()==)
printf("Ordering is possible.\n");
else
printf("The door cannot be opened.\n");
}
;
}
hdu1116 欧拉回路的更多相关文章
- hdu-1116(欧拉回路+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1116 思路:将字符串的头元素和尾元素视为图的x,y节点,然后合并x,y. 如果这个图不连通,则门不能打 ...
- ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)
//网络流判定混合图欧拉回路 //通过网络流使得各点的出入度相同则possible,否则impossible //残留网络的权值为可改变方向的次数,即n个双向边则有n次 //Time:157Ms Me ...
- [poj2337]求字典序最小欧拉回路
注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...
- ACM: FZU 2112 Tickets - 欧拉回路 - 并查集
FZU 2112 Tickets Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u P ...
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- POJ 1637 混合图的欧拉回路判定
题意:一张混合图,判断是否存在欧拉回路. 分析参考: 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流! (1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定 ...
- codeforces 723E (欧拉回路)
Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...
- UVa 12118 检查员的难题(dfs+欧拉回路)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 10054 (欧拉回路) The Necklace
题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...
随机推荐
- PC-1500的代码存入WAV文件
目录 第1章保存 1 1.1 操作 1 1.2 波形说明 4 1.3 波形整形 5 1.4 压缩 8 第2章载入 9 2.1 操作 9 2.2 音量 9 ...
- UTF-7编码
目录 1 编码 1 2 编码代码(C++) 2 3 解码代码(C++) 4 4 测试代码(VC++) 7 1 编码 UTF-7编码的规则及特点为: 1)UTF16小于等于 0x ...
- 【CodeVS 1004】四子连棋
http://blog.csdn.net/u013598409/article/details/43924465 相比于一年半前,代码的掌控能力强了许多. #include <cstdio> ...
- ThreadLocal 那点事儿
原文出处: 黄勇 ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为应该叫做 ThreadLocalVaria ...
- hdu 1811 Rank of Tetris (并查集+拓扑排序)
Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- EasyUI TreeGrid
数据格式1: { , "rows": [ { "id": 1, "name": "All Tasks", "b ...
- ajax的data传参的两种方式
ajax的data传参的两种方式 本文为转载. 1.[javascript] view plain copy /** * 订单取消 * @return {Boolean} 处理是否成功 */ func ...
- Linux中Matlab保存多个数据到同一个文件当中
% load pyrim % NumTrain = 50; % load machine %NumTrain = 150; % load housing % NumTrain = 300; % loa ...
- QQ输入法评价
用户界面: 用户可以通过登录QQ展现自己的QQ头像,可以点击头像显示用户信息,可以中英文切换,全半角切换,打开属性设置,以为软键盘 记住用户选择: 当用户使用QQ输入法时,QQ输入法可以记住用户当前的 ...
- BZOJ3206 [Apio2013]道路费用
首先我们强制要求几条待定价的边在MST中,建出MST 我们发现这个MST中原来的边是一定要被选上的,所以可以把点缩起来,搞成一棵只有$K$个点的树 然后$2^K$枚举每条边在不在最终的MST中,让在最 ...