两道有关欧拉回路的例题


POJ1300-Door Man

//判定是否存在从某点到0点的欧拉回路
//Time:0Ms Memory:116K
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; #define MAX 25
int st, n;
int door[MAX]; int main()
{
char s[120];
while (scanf("%s", s), strcmp(s, "ENDOFINPUT"))
{
memset(door, 0, sizeof(door));
int doors = 0;
scanf("%d%d", &st, &n);
gets_s(s, 120);
for (int i = 0; i < n; i++)
{
gets_s(s, 120);
int num, k = 0;
while (sscanf(s + k, "%d", &num) == 1)
{
doors++;
door[num]++;
door[i]++;
while (s[k] == ' ') k++;
while (s[k] && s[k] != ' ') k++;
}
}
gets_s(s, 120);
int odd = 0;
for (int i = 0; i < n; i++)
odd += door[i] % 2 == 1;
if (odd == 0 && st == 0)
printf("YES %d\n", doors); //无奇度节点
else if (odd == 2 && st && door[st] % 2 && door[0] % 2)
printf("YES %d\n", doors); //两个奇度节点
else printf("NO\n");
}
return 0;
}

POJ1386-Plays on Words

//判断能否使给定的词组前后接龙
//Time:344Ms Memory:120K
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; #define MAX 28
#define MAXS 1005
#define MAXN 100005 int n;
char s[MAXS];
int in[MAX], out[MAX];
int fa[MAX]; int find(int x)
{
return fa[x] < 0 ? x : find(fa[x]);
} int Union(int r1, int r2)
{
r1 = find(r1); r2 = find(r2);
if (r1 == r2) return r1;
int tmp = fa[r1] + fa[r2];
if (fa[r1] > fa[r2])
{
fa[r1] = r2;
fa[r2] = tmp;
return r2;
}
else {
fa[r2] = r1;
fa[r1] = tmp;
return r1;
}
} int main()
{
//freopen("words.in", "r", stdin);
int T;
scanf("%d", &T);
while (T--) {
memset(in, 0, sizeof(in));
memset(out, 0, sizeof(out));
memset(fa, -1, sizeof(fa)); int pa;
scanf("%d", &n);
while (n--) {
scanf("%s", s);
int i = s[strlen(s) - 1] - 'a';
int o = s[0] - 'a';
out[o]++; in[i]++;
pa = Union(i, o);
} int odd = 0;
bool connect = true;
bool A = false, B = false;
for (int i = 0; i < 26; i++)
{
if (!in[i] && !out[i]) continue;
if (pa != find(i)) {
connect = false; break;
}
if (in[i] - out[i] != 0)
{
odd++;
if (in[i] - out[i] == 1) A = true;
if (in[i] - out[i] == -1) B = true;
}
}
if (connect && ((odd == 2 && A && B) || odd == 0))
printf("Ordering is possible.\n");
else printf("The door cannot be opened.\n");
} return 0;
}

ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)的更多相关文章

  1. ACM/ICPC 之 平面几何-两直线关系(POJ 1269)

    题意:给定四点的坐标(x,y),分别确定两直线,求出其交点,若重合or平行则输出相应信息 用四个点的坐标算出直线通式(ax+by+c=0)中的a,b,c,然后利用a,b,c计算出交点坐标(其他公式不够 ...

  2. ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)

    两道以Floyd算法为解法的范例,第二题如果数据量较大,须采用其他解法 POJ2570-Fiber Network //经典的传递闭包问题,由于只有26个公司可以采用二进制存储 //Time:141M ...

  3. ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)

    两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...

  4. ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)

    两道较为典型的单源最短路径问题,采用dijkstra解法 本来是四道练习题,后来发现后面两道用dijkstra来解的话总觉得有点冗余了,因此暂且分成三篇博客(本篇以及后两篇). ZOJ1053(POJ ...

  5. 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester

    这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...

  6. 2016 ACM/ICPC Asia Regional Qingdao Online(2016ACM青岛网络赛部分题解)

    2016 ACM/ICPC Asia Regional Qingdao Online(部分题解) 5878---I Count Two Three http://acm.hdu.edu.cn/show ...

  7. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  8. ACM - ICPC World Finals 2013 C Surely You Congest

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 试题来源 ACM/ICPC World Fin ...

  9. 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)

    队名:Unlimited Code Works(无尽编码)  队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...

随机推荐

  1. Redis3.0.7 cluster/集群 安装配置教程

    1.前言 环境:CentOS-6.7-i386-LiveDVD 安装的CentOs系统 节点: 6个节点,3个主节点.3个从节点(由于redis默认需要3个主节点,如果想每个主节点有一个从节点,这是最 ...

  2. Centos安装Kafka集群

    kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目.在它的主页描述kafka为一个高吞吐量的分布式(能 将消息分散到不同的节点上)MQ.在这片博文中,作者简单 ...

  3. ubuntu命令行打开html文件的方法

    1.Ctrl+Alt+T可以打开shell,F11可以全屏显示,输入以下命令即可打开js17.html,并且指定浏览器,比如指定chrome, 复制代码 代码如下: google-chrome js1 ...

  4. iOS9新特性(1)-解决http请求失败的问题

    iOS9默认不支持HTTP请求,需要改用更安全的HTTPS(默认用TLS 1.2). 但事实上,有些地方用HTTP比HTTPS更适合,而且把服务端升级到TLS 1.2也不是一时半会能够搞定的.幸好苹果 ...

  5. 关于Mysql错误:./bin/mysqld_safe --user=mysql& [1] 32710 121003 16:40:22 mysqld_safe Logging to '/var/log/mysqld.log'. 121003 16:40:22 mysqld_s

    [root@www]# ./bin/mysqld_safe --user=mysql&[1] 32710[root@www]# 121003 16:40:22 mysqld_safe Logg ...

  6. QT中Sqlite的使用

    环境: 静态编译过sqlite 步骤: 1.C++链接器中加入Sqlite.lib,然后在测试一下是否能正常加载Sqlite驱动 #include<QtPlugin> Q_IMPORT_P ...

  7. Codeforces Round #202 (Div. 2) A,B

    A. Cinema Line time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  8. 全键盘Vimium快捷键学习记录

    0.设置而 vimium 的默认搜索引擎: http://www.baidu.com/s?wd= j: 向下细微滚动窗口.  k:向上细微滚动窗口. gg:跳转到页面的顶部.G:跳转到页面的底部.r: ...

  9. Mac Pro 编译安装 Nginx 1.8.1

    #下载相关源码包,统一放到 /usr/local/src 目录下: http://nginx.org/download/nginx-1.8.1.tar.gz http://zlib.net/zlib- ...

  10. PHP Socket实现websocket(一)基本函数介绍

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 一开始的握手需要借助HTTP请求完成. WebSocket是基于TCP来实 ...