是一道歐拉路的題竟然沒看出來......


把每種顏色看成一個點,每根木棍看成一個邊,即相同顏色在圖中接好合併成了一個點,

問題轉化為了求是否存在歐拉路

如果用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");
}

最新文章

  1. SQL Server2014 SP2关键特性
  2. ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []
  3. 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
  4. linux文件创建、查看、编辑命令
  5. Java经典类库-Guava中的函数式编程讲解
  6. ASP.NET中进行消息处理(MSMQ) 一
  7. AppServ的安装与配置
  8. Web---JS-返回上一页并刷新代码整理
  9. CollectionView就是这么简单!
  10. 在Iframe框架下如何跳转到登录界面
  11. JPA中以HibernatePersistence为provider的批量插入问题
  12. java中Integer比较需要注意的问题
  13. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
  14. (二)Maven的安装与环境配置
  15. Python链接Oracle数据库
  16. spring boot 项目无法访问静态页面
  17. python2.x 到 python3.x 中“url”部分变化
  18. 区别script中的type=”text/javascript”和language=”Javascript”
  19. OpenERP how to set the tree view limit
  20. 获取AD域中SYSVOL和组策略首选项中的密码

热门文章

  1. include vector 编译出错VC++
  2. Codeforces Round #383 (Div. 2) D. Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses —— DP(01背包)
  3. Nginx配置故障转移
  4. zk使用通知移除节点
  5. 利用javascript动态创建表格
  6. top命令按内存和cpu排序
  7. DFS序+线段树(bzoj 4034)
  8. react之redux增加删除数字
  9. starUML安装与破解
  10. Gulp简单应用