zoukankan      html  css  js  c++  java
  • 【一本通】欧拉回路

    欧拉回路

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+5,M=4e5+5;
     4 int t,n,m,tot,in[N],ou[N],ans[M];
     5 int cnt,fro[N],to[M],nxt[M];
     6 bool vis[M];
     7 void add(int x,int y) {
     8     to[++cnt]=y,nxt[cnt]=fro[x]; fro[x]=cnt;
     9     in[y]++,ou[x]++;
    10 }
    11 
    12 void DFS(int x) {
    13     for(int &i=fro[x];i;i=nxt[i]) {
    14         int h=i;
    15         if(t==1) {
    16             int k=(i+1)>>1;
    17             if(!vis[k]) {
    18                 vis[k]=1; DFS(to[i]);
    19                 if(h&1) ans[++tot]=k; else ans[++tot]=-k;
    20             }
    21         }
    22         else if(!vis[i]) {
    23             vis[i]=1; DFS(to[i]);
    24             ans[++tot]=h;
    25         }
    26     } 
    27 }
    28 
    29 int main() {
    30     t=read();
    31     n=read(),m=read();
    32     for(int i=1;i<=m;i++) {
    33         int u=read(),v=read();
    34         add(u,v); if(t==1) add(v,u);
    35     }
    36     if(t==1) for(int i=1;i<=n;i++) if(in[i]&1) return printf("NO"),0; 
    37     if(t==2) for(int i=1;i<=n;i++) if(in[i]^ou[i]) return printf("NO"),0;
    38     DFS(to[1]);
    39     if(tot<m) return printf("NO"),0;
    40     printf("YES
    ");
    41     for(int i=tot;i;i--) printf("%d ",ans[i]);
    42 }

    单词游戏

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int T,n,Father,in[30],out[30],fa[30];
     4 bool flag,s,t;
     5 char a[1005];
     6 
     7 int num(char c) {return c-'a'+1;}
     8 int getfa(int x) {return fa[x]==x?x:fa[x]=getfa(fa[x]);}
     9 void ready() {
    10     flag=s=t=false; Father=0;
    11     for(int i=1;i<=26;i++) fa[i]=i;
    12     memset(in,0,sizeof(in));
    13     memset(out,0,sizeof(out));
    14 }
    15 
    16 int main() {
    17     scanf("%d",&T);
    18     while(T--) {
    19         ready();
    20         scanf("%d",&n);
    21         for(int i=1;i<=n;i++) {
    22             scanf("%s",a+1);
    23             int len=strlen(a+1);
    24             out[num(a[1])]++,in[num(a[len])]++;
    25             fa[getfa(num(a[1]))]=getfa(num(a[len]));
    26         }
    27         for(int i=1;i<=26;i++) {
    28             if(in[i]==out[i]) continue;
    29             else if(in[i]+1==out[i]&&!s) s=true;
    30             else if(in[i]==out[i]+1&&!t) t=true;
    31             else {flag=true; break;}
    32         }
    33         for(int i=1;i<=26;i++)
    34          if(in[i]||out[i]) {
    35              if(!Father) Father=getfa(i);
    36              else if(Father^getfa(i)) {flag=true; break;}
    37          }
    38         if(flag) printf("The door cannot be opened.
    ");
    39         else printf("Ordering is possible.
    ");
    40     }
    41 }

    Ant Trip

    题解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+5;
     4 int n,m,ans,d[N],fa[N],s[N];
     5 bool vis[N];
     6 vector<int> v;
     7 
     8 int getfa(int x) {return fa[x]==x?x:fa[x]=getfa(fa[x]);}
     9 void ready() {
    10     ans=0;
    11     v.clear();
    12     memset(d,0,sizeof(d));
    13     memset(vis,0,sizeof(vis));
    14     memset(s,0,sizeof(s));
    15     for(int i=1;i<=n;i++) fa[i]=i;
    16 }
    17 
    18 int main() {
    19     while(~scanf("%d%d",&n,&m)) {
    20         ready();
    21         for(int i=1;i<=m;i++) {
    22             int a=read(),b=read();
    23             d[a]++,d[b]++;
    24             fa[getfa(a)]=getfa(b);
    25         }
    26         for(int i=1;i<=n;i++) {
    27             int x=getfa(i);
    28             if(!vis[x]) {
    29                 v.push_back(x);
    30                 vis[x]=1;
    31             }
    32             if(d[i]&1) s[x]++;
    33         }
    34         for(int i=0;i<v.size();i++) {
    35             int x=v[i];
    36             if(d[x]==0) continue;
    37             if(s[x]==0) ans++;
    38             else ans+=s[x]/2;
    39         }
    40         printf("%d
    ",ans);
    41     }
    42 }
  • 相关阅读:
    软件开发平台正在面临一次重大的升级,java, net比起来简直弱爆了,新型的Html5+JS+JSON开发平台正在形成 人工智能
    Qt编写地图综合应用48地球模式、三维模式、地铁模式
    Qt数据库应用1数据导入导出csv
    Qt编写地图综合应用50获取区域边界
    Qt编写地图综合应用49地图类型(街道图、卫星图)
    Qt数据库应用2数据导出到xls
    Qt编写地图综合应用47经纬度地址互相转换
    C# 线程手册 第七章 网络和线程 系列
    SQL Server Transaction Log Truncate && Shrink
    a href=#与 a href=javascript:void(0) 的区别 打开新窗口链接的几种办法
  • 原文地址:https://www.cnblogs.com/qq8260573/p/10610527.html
Copyright © 2011-2022 走看看