UVA-10054.The Necklace(欧拉回路)解题报告
2019-02-09-21:55:23
原题链接
题目描述:
给定一串珠子的颜色对,每颗珠子的两端分别有颜色(用1 - 50 之间的数字表示,对每颗珠子的颜色无特殊要求),若两颗珠子的连接处为同种颜色则可以相连,
当整串珠子都满足两两可以相连时则输出连接序列,否则输出some beads may be lost。
解题思路:
简单欧拉回路思维,注意判断该图是否可以构成欧拉回路。
算法描述及其实现:
#include <bits/stdc++.h>
using namespace std; const int maxn = + ;
const int nmax = + ;
int l, r, n, t, kase = ;
int G[maxn][maxn], ans[nmax][], degree[maxn];
bool flag; void euler_circut(int i) {//当搜寻到最后一颗珠子时回溯保存之前所有的珠子。
for(int j = ; j < maxn; j ++)
if(G[i][j]) {
G[i][j] --;
G[j][i] --;
euler_circut(j);
ans[t][] = i + ;
ans[t ++][] = j + ;
}
} int main () {
ios::sync_with_stdio(false);
int T;
cin >> T;
while(T --) {
flag = true;
memset(G, , sizeof(G));
memset(degree, , sizeof(degree));
cin >> n;
for(int i = ; i < n; i ++) {
cin >> l >> r;
G[r - ][l - ] ++;
G[l - ][r - ] ++;
degree[r - ] ++;
degree[l - ] ++;
}
t = ;
for(int i = ; i < maxn; i ++)
if(degree[i] % ) {
flag = false;
break;
}
if(flag)
for(int i = ; i < maxn; i ++)
euler_circut(i);
cout << "Case #" << ++kase << endl;
if(flag)
for(int i = t - ; i >= ; i --)
cout << ans[i][] << ' ' << ans[i][] << endl;
else
cout << "some beads may be lost" << endl;
cout << endl;
}
return ;
}
UVA-10054.The Necklace(欧拉回路)解题报告的更多相关文章
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 10054 The Necklace(欧拉回路)
The Necklace My little sister had a beautiful necklace made of colorful beads. Two successive beads ...
- UVa 10054 The Necklace(无向图欧拉回路)
My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...
- 【欧拉回路】UVA - 10054 The Necklace
题目大意: 一个环被切割成了n个小块,每个小块有头尾两个关键字,表示颜色. 目标是判断给出的n个小块能否重构成环,能则输出一种可行解(按重构次序输出n个色块的头尾颜色).反之输出“some beads ...
- uva 10054 The Necklace 拼项链 欧拉回路基础应用
昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...
- UVa 10054 The Necklace【欧拉回路】
题意:给出n个珠子,珠子颜色分为两半,分别用1到50之间的数字表示, 现在给出n个珠子分别的颜色,问是否能够串成一个环.即为首尾相连,成为一个回路 判断是否构成一个环,即判断是否为欧拉回路,只需要判断 ...
- UVa 10054 The Necklace BFS+建模欧拉回路
算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...
- UVA 10054 The Necklace (无向图的欧拉回路)
本文链接:http://www.cnblogs.com/Ash-ly/p/5405904.html 题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同 ...
随机推荐
- Windows环境安装Django步骤
前提:已经安装Python 1.先从Django官网下载压缩包:https://www.djangoproject.com/download/ 2.解压Django,如我解压到 D:\Python\D ...
- c# group by list
ViewBag.PnlTotal = pnlTotal; // 柱形图 string data = ""; string cat = ""; string bu ...
- day36-常见内置模块五(collections、xml模块)
一.collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counter ...
- P12, cer, provisioning profile
p12,本地私钥(实际上证书和私钥可以一起导出成p12,这里我们仅指私钥) cer,证书,即苹果签名后的公钥 provisioning profile描述文件 一个证书对应一个私钥,也就是本地的p12 ...
- HTML Tables
Great job! In this lesson, you learned how to create a table, add data to it, and section the table ...
- 2018SDIBT_国庆个人第三场
A - A CodeForces - 1042A There are nn benches in the Berland Central park. It is known that aiai peo ...
- React之使用Context跨组件树传递数据
--------------------------------- 讲解一 原文:https://blog.csdn.net/xuxiaoping1989/article/details/78480 ...
- swift中的UITextField
let userTF = UITextField(frame: CGRectMake(,,,)) userTF.backgroundColor = UIColor.redColor() // 输入框样 ...
- 生成一个文件夹中的所有文件的txt列表
1.windows操作系统中 1.用管理员运行打开dos界面: 2.用cd转到相应的文件夹中: 3.用dir /b /on >list.txt来生成文件列表的txt. 2.Mac系统中 1.打开 ...
- php yii 命令
php yii 敲回车 This is Yii version 2.0.11. The following commands are available: - asset Allows you to ...