[題解]luogu_P1333瑞瑞的木棍(并查集/圖論)
2024-10-22 07:20:20
是一道歐拉路的題竟然沒看出來......
把每種顏色看成一個點,每根木棍看成一個邊,即相同顏色在圖中接好合併成了一個點,
問題轉化為了求是否存在歐拉路
如果用map會超時,所以可以用字典樹實現離散化/哈希,unordered_map需要c++11
注意判斷圖是否聯通,用并查集即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<unordered_map>
using namespace std;
const int maxn=*;//點數
int x,y,cnt,n;char s[];
int deg[maxn];
int fa[maxn];
int find(int x){
while(x!=fa[x])x=fa[x]=fa[fa[x]];
return x;
}
bool unionn(int x,int y){
x=find(x),y=find(y);
if(x==y)return ;
fa[x]=y;return ;
}
//字典樹
int nod=,root=;
struct node{
int son[],num;
}t[maxn*];
int ask(char *s){
int k=root;char c;
for(int i=;s[i];i++){
c=s[i]-'a';
if(!t[k].son[c])t[k].son[c]=++nod;//動態開點
k=t[k].son[c];
}
if(!t[k].num)t[k].num=++n;
return t[k].num;
}
//unordered_map<string,int>m;
//int ask(char *s){
// return m[s]?m[s]:m[s]=++n;
//}
int main(){
for(int i=;i<=maxn;i++)fa[i]=i;
while(~scanf("%s",s)){
x=ask(s);
scanf("%s",s);
y=ask(s);
if(unionn(x,y))++cnt;
++deg[x],++deg[y];
}
if(cnt<n-){printf("Impossible");return ;}//判聯通
int tot=;//記錄奇點個數
for(int i=;i<=n;i++){
if(deg[i]&)tot++;
if(tot>){printf("Impossible");return ;}
}
printf("Possible");
}
最新文章
- SQL Server2014 SP2关键特性
- ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []
- 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
- linux文件创建、查看、编辑命令
- Java经典类库-Guava中的函数式编程讲解
- ASP.NET中进行消息处理(MSMQ) 一
- AppServ的安装与配置
- Web---JS-返回上一页并刷新代码整理
- CollectionView就是这么简单!
- 在Iframe框架下如何跳转到登录界面
- JPA中以HibernatePersistence为provider的批量插入问题
- java中Integer比较需要注意的问题
- JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
- (二)Maven的安装与环境配置
- Python链接Oracle数据库
- spring boot 项目无法访问静态页面
- python2.x 到 python3.x 中“url”部分变化
- 区别script中的type=”text/javascript”和language=”Javascript”
- OpenERP how to set the tree view limit
- 获取AD域中SYSVOL和组策略首选项中的密码
热门文章
- include vector 编译出错VC++
- Codeforces Round #383 (Div. 2) D. Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses —— DP(01背包)
- Nginx配置故障转移
- zk使用通知移除节点
- 利用javascript动态创建表格
- top命令按内存和cpu排序
- DFS序+线段树(bzoj 4034)
- react之redux增加删除数字
- starUML安装与破解
- Gulp简单应用