资讯详情

欧拉路径(连通)

样例 输入样例1: 7 12 5 7 1 2 1 3 2 3 2 4 3 4 5 2 7 6 6 3 4 5 6 4 5 6 输出样例1: 2 4 4 4 4 4 2 Eulerian 输入样例2: 6 10 1 2 1 3 2 3 2 4 3 4 5 2 6 3 4 5 6 4 5 6 输出样例2: 2 4 4 4 3 3 Semi-Eulerian 输入样例3: 5 8 1 2 2 5 5 4 4 1 1 3 3 2 3 4 5 3 输出样例3: 3 3 4 3 3 Non-Eulerian

#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 1010; int n,m,res; int d[N]; bool st[N],g[N][N]; int dfs(int u) {     st[u]=1;     int cnt=1;     for (int i = 1; i <= n; i    )       if(!st[i]&&g[u][i])cnt =dfs(i);//如果连接     return cnt; } int main() {     cin>>n>>m;     while (m -- )     {         int a,b;         cin>>a>>b;         g[a][b]=g[b][a]=true;         d[a]  ,d[b]  ;     }     int cnt=dfs(1);     for (int i = 1; i <= n; i    )cout<<d[i]<<' ';     puts("");     if(cnt==n)     {         for (int i = 1; i <= n; i    )            if(d[i]&1)res  ;         if(res==0)puts("Eulerian");         else if(res==2)puts("Semi-Eulerian");         else puts("Non-Eulerian");     }     else  puts("Non-Eulerian");     return 0; }

#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 1e6 10; int n,m,res,ret; int s[N],p[N]; int find(int x)   {    return p[x]==x?x:p[x]=find(p[x]); } int main() {     cin>>n>>m;     for (int i = 1; i <= n; i    )p[i]=i;     while (m -- )     {         int a,b,x,y;         cin>>a>>b;         x=find(a),y=find(b);         if(x!=y)p[x]=y;         s[a]  ,s[b]  ;     }     int x=find(1);     bool flag=false;     for (int i = 2; i <= n; i    )     {         int xx=find(i);         if(x!=xx)         {             flag=true;             break;//不连通         }     }     for (int i = 1; i <= n; i    )     {         if(s[i]&1)res  ;         else ret  ;         cout<<s[i]<<' ';     }     puts("");     if(flag)puts("Non-Eulerian");     else     {         if(res==0)puts("Eulerian");         else if(res==2)puts("Semi-Eulerian");         else puts("Non-Eulerian");     }     return 0; }

import java.io.*; import java.util.*; public class Main {     static int p[]=new int [1010];     static int s[]=new int [1010];     static int res=0;     public static int find(int x)     {         if (p[x] != x) p[x] = find(p[x]);         return p[x];     }     public static void main(String args[])  {         Scanner cin = new Scanner(System.in);         int n=cin.nextInt(),m=cin.nextInt();         for (int i = 1; i <= n; i    )p[i]=i;         while(m--!=0)         {             int a,b,x,y;             a=cin.nextInt();             b=cin.nextInt();             x=find(a);             y=find(b);             if(x!=y)p[x]=y;             s[a]  ;             s[b]  ;         }         int x=find(1);         boolean flag=false;         for (int i = 2; i <= n; i    )          {           int xx=find(i);           if(x!=xx)           {             flag=true;             break;//不连通           }         }         for (int i = 1; i <= n; i    )        {         if(s[i]%2!=0)res  ;         System.out.print(s[i] " ");        }        System.out.println("");       if(flag==true) System.out.println("Non-Eulerian);
      else
      {
        if(res==0) System.out.println("Eulerian");
        else if(res==2) System.out.println("Semi-Eulerian");
        else  System.out.println("Non-Eulerian");
      }
      return ;

    }
}

标签: 集成电路true

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台