zoukankan      html  css  js  c++  java
  • poj 2513 Colored Sticks

    http://poj.org/problem?id=2513 题目的意思是说给一些木棒,每个木棒的头尾是不同的颜色,如果两个木棒首尾颜色相同就可以相接,问是否可以让所有的木棒都连起来。

    我是用的并查集和trie树和欧拉回路来判断的。建立trie树的过程中捎带合并集合,用并查集判断是否只有一个环,如果不是,则直接输出“Imb“然后再根据欧拉回路的条件判断,欧拉回路的条件:度为奇数的点的个数不能超过两个。

     1 #include<stdio.h>
    2 #include<string.h>
    3 #include<iostream>
    4 using namespace std;
    5 #define N 250001
    6 char s[20],t[20];
    7 int num,tem;
    8 int a[N*2],f[N*2];
    9 struct node
    10 {
    11 int k;
    12 node *key[26];
    13 node()
    14 {
    15 int i;
    16 for(i=0;i<26;i++)
    17 key[i]=NULL;
    18 k=-1;
    19 }
    20 }*root;
    21 int insert(char *s)
    22 {
    23 int i,len=strlen(s);
    24 node *p;
    25 p=root;
    26 for(i=0;i<len;i++)
    27 {
    28 int t=s[i]-'a';
    29 if(p->key[t]!=NULL) p=p->key[t];
    30 else
    31 {
    32 p->key[t]=new node;
    33 p=p->key[t];
    34 }
    35 }
    36 if(p->k==-1) p->k=num++;
    37 return p->k;
    38 }
    39 int find(int x)
    40 {
    41 if(a[x]!=x) return a[x]=find(a[x]);
    42 return a[x];
    43 }
    44 int main()
    45 {
    46 int i;
    47 num=0;
    48 root=new node;
    49 char str[30];
    50 memset(f,0,sizeof(f));
    51 for(i=0;i<N;i++)
    52 a[i]=i;
    53 while(gets(str))
    54 {
    55 sscanf(str,"%s%s",s,t);
    56 int x=insert(s);
    57 int y=insert(t);
    58 f[x]++;f[y]++;
    59 int xx=find(x);
    60 int yy=find(y);
    61 if(xx!=yy) a[xx]=yy; //合并集合
    62 }
    63 int sum=0;
    64 for(i=0;i<num;i++)
    65 {
    66 if(i==find(i)) sum++;
    67 }
    68 int flag=0;
    69 if(sum>1) {cout<<"Impossible\n";flag=1;}
    70 if(!flag)
    71 {
    72 sum=0;
    73 for(i=0;i<num;i++)
    74 {
    75 if(f[i]%2) sum++; // 根据欧拉回路判断
    76 }
    77 if(sum>2) cout<<"Impossible\n";
    78 else cout<<"Possible\n";
    79 }
    80 return 0;
    81 }


  • 相关阅读:
    获取平台所有接口的IP和MAC地址
    共享内存
    消息队列
    shell常见语法
    保存结构体到文件
    Bookmarks
    js打开新窗口
    要买的书
    批量下载辅助工具
    解决word没有菜单栏和工具栏
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2380941.html
Copyright © 2011-2022 走看看