洛谷P1333 瑞瑞的木棍(欧拉回路)
题目描述
瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这些木棍连在一起拼成一条线,并且使得木棍与木棍相接触的两端颜色都是相同的,给出每根木棍两端的颜色,请问是否存在满足要求的排列方式。
例如,如果只有2根木棍,第一根两端的颜色分别为red,blue,第二根两端的颜色分别为red,yellow,那么blue---red|red----yellow便是一种满足要求的排列方式。
输入输出格式
输入格式:
输入有若干行,每行包括两个单词,表示一根木棍两端的颜色,单词由小写字母组成,且单词长度不会超过10个字母,最多有250000根木棍。
输出格式:
如果木棒能够按要求排列,输出Possible,否则输出Impossible
输入输出样例
输入样例#1: 复制
blue red red violet cyan blue blue magenta magenta cyan
输出样例#1: 复制
Possible
我们把相同颜色的点看做一个节点
那么这个题就是判断是否含有欧拉路(欧拉路径)
欧拉路的判断基本都是DFS
但其实并查集也可以做
设为成功合并的次数,为点数
则整张图含欧拉路当且仅当且奇度数点为或
顺便提一下
pbds真是个好东西
#include<cstdio> #include<cstring> #include<map> #include<iostream> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/hash_policy.hpp> using namespace __gnu_pbds; using namespace std; const int MAXN=1e6+10; gp_hash_table<string,int>mp; int tot=0,fa[MAXN],inder[MAXN]; int find(int x) { if(fa[x]==x) return fa[x]; else return fa[x]=find(fa[x]); } int unionn(int x,int y) { inder[x]++;inder[y]++; int fx=find(x),fy=find(y); if(fx==fy) return 0; fa[fx]=fy; return 1; } int main() { ios::sync_with_stdio(false); for(int i=1;i<=250001;i++) fa[i]=i; string a,b; int ans=0; while(cin>>a>>b) { int posa=mp[a]?mp[a]:mp[a]=++tot; int posb=mp[b]?mp[b]:mp[b]=++tot; ans+=unionn(posa,posb); } if(ans<tot-1) {printf("Impossible\n");return 0;} int attack=0; for(int i=1;i<=tot;i++) if(inder[i]&1) attack++; if(attack>2) {printf("Impossible\n");return 0;} printf("Possible\n"); return 0; }
作者:自为风月马前卒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2017-02-28 36:计算多项式的值
2017-02-28 33:计算分数加减表达式的值
2017-02-28 27:级数求和
2017-02-28 26:统计满足条件的4位数个数
2017-02-28 25:求特殊自然数
2017-02-28 19:救援
2017-02-28 21:角谷猜想