1. 程式人生 > >計蒜客習題:判定歐拉回路

計蒜客習題:判定歐拉回路

問題描述

你學過一筆畫問題麼?其實一筆畫問題又叫歐拉回路,是指在畫的過程中,筆不離開紙,且圖中每條邊僅畫一次,而且可以回到起點的一條迴路。

蒜頭君打算考考你,給你一個圖,問是否存在歐拉回路?
輸入格式
第 11 行輸入兩個正整數,分別是節點數 N(1< N<1000) 和邊數 M(1< M<100000);
緊接著 M 行對應 M 條邊,每行給出一對正整數,分別是該條邊直接連通的兩個節點的編號(節點從 1 到 N 編號)。
輸出格式
若存在歐拉回路則輸出 1,否則輸出 0。
樣例輸入
10 11
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 3
3 1
樣例輸出


1

AC程式碼

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;

int eid,n,m;
int du[1050];
int fa[1050];


void init()
{
    memset(du,0,sizeof(du));
    for (int i=1;i<=n;i++)
    {
        fa[i]=i;
    }
 } 

int
getdad(int i) { if(fa[i]==i)return fa[i]; return fa[i]=getdad(fa[i]); } int main() { cin>>n>>m; init(); for(int i=1;i<=m;i++) { int a,b; cin>>a>>b; if(a==b)continue; if(getdad(a)!=getdad(b))fa[getdad(a)]=getdad(b); du[a]++; du[b]++; } int
c=getdad(1); for(int i=1;i<=n;i++) { if(c!=getdad(i)) { cout<<"0"; return 0; } } int cnt=0; for(int i=1;i<=n;i++) { if(du[i]%2==1) { cnt++; } } if(cnt==0||cnt==1)cout<<"1"; else cout<<"0"; return 0; }

相關推薦

習題判定

問題描述 你學過一筆畫問題麼?其實一筆畫問題又叫歐拉回路,是指在畫的過程中,筆不離開紙,且圖中每條邊僅畫一次,而且可以回到起點的一條迴路。 蒜頭君打算考考你,給你一個圖,問是否存在歐拉回路?

習題表示式求值

問題描述 給定一個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值的最後四位。 輸入格式 輸入僅有一行,為需要你計算的表示式,表示式中只包含數字、加法運算子’+’和乘法運算子’‘,

習題受歡迎的蒜頭

問題描述 蒜廠除了蒜頭君還有很多小蒜頭。 每隻蒜頭的夢想是成為最受歡迎的蒜頭。有 N 只蒜頭,有 M 對二元關係 (A,B),告訴你蒜頭 A 認為蒜頭 B 是受歡迎的。如果 A 認為 B 是受歡迎的,B 認為 C 是受歡迎的,則 A 也認為 C 是受

習題迴文數

問題描述 一個正整數,如果交換高低位以後和原數相等,那麼稱這個數為迴文數。比如 121,2332 都是迴文數,134567 不是迴文數。 任意一個正整數,如果其不是迴文數,將該數交換高低位以後和原數相加得到一個新的數,如果新數不是迴文數,重複這個變換

習題進位制轉換

問題描述 輸入一個十進位制數N,將它轉換成R進位制數輸出。在10≤R≤16 的情況下,用’A’表示10,用’B’表示11,用’C’表示12,用’D’表示13,用’E’表示14,用’F’表示15

習題迴文串

問題描述 一個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是一個迴文串。例如:”abcba”,”abccba”。 蒜頭君想通過新增字元把一個非迴文字串變成迴文串。例如:”trit”,可

習題節點的最近公共祖先

問題描述 樹是一種很常見的資料結構。現在蒜頭君面臨一個問題,在一個有 n 個節點的樹上,節點編號分別是1…n。蒜頭想知道一些節點之間的最近公共祖先是那些節點。 輸入格式 第一行輸入一個整數

習題壘骰子

問題描述 賭聖atm晚年迷戀上了壘骰子,就是把骰子一個壘在另一個上邊,不能歪歪扭扭,要壘成方柱體。 經過長期觀察,atm 發現了穩定骰子的奧祕:有些數字的面貼著會互相排斥!我們先來規範一下骰子:1 的對面是 4,2 的對面是 5,3 的對面是 6。假

習題灌溉機器人

問題描述 農田灌溉是一項十分費體力的農活,特別是大型的農田。蒜頭君想為農民伯伯們減輕農作負擔,最近在研究一款高科技——灌溉機器人。它可以在遠端電腦控制下,給農田裡的作物進行灌溉。 現在有一片 N 行 M 列的農田。農田的土壤有兩種型別:型別 HH 和

習題a+b問題

問題描述 輸入兩個整數 a,b輸出兩個整數的和。 輸入格式 第一行輸入一個整數 T,表示需要計算的次數。 接下來 T 行,每行輸入兩個用空格分隔的整數 a,b。 輸出格式 對於每次輸

習題斐波那契數列

問題描述 相信小夥伴們都學過斐波那契數列,它是這樣的一個數列:1,1,2,3,5,8,13,21⋯。 用 f(n)表示斐波那契數列的第n項,則有:f(1)=f(2)=1,f(n)=f(n-1

判定

你學過一筆畫問題麼?其實一筆畫問題又叫歐拉回路,是指在畫的過程中,筆不離開紙,且圖中每條邊僅畫一次,而且可以回到起點的一條迴路。蒜頭君打算考考你,給你一個圖,問是否存在歐拉回路?輸入格式第 11 行輸入兩個正整數,分別是節點數 N(1 < N < 1000)N(1

HDU1878 (並查集+

1 0 題義就是在給定的圖中判定是否存在歐拉回路。 圖G的一個迴路,若它恰通過G中每條邊一次,則稱該回路為尤拉(Euler)迴路。 具有歐拉回路的圖稱為尤拉圖(簡稱E圖)。 這裡總結下各種圖的判定的方法: 1.無向圖中:所給定的圖為連通圖,且所有節點的度為偶數; 2.有向圖中:所給定的圖

| 圖 | 判斷

conn mar map sca thml gin def 是否 bool 你學過一筆畫問題麽?其實一筆畫問題又叫歐拉回路,是指在畫的過程中,筆不離開紙,且圖中每條邊僅畫一次,而且可以回到起點的一條回路。 蒜頭君打算考考你,給你一個圖,問是否存在歐拉回路? 輸入格式 第

--農場看守(簡單的

蒜頭君最近做了農場看守,他每天晚上的工作就是巡視農場並且保證沒有人破壞農場。從穀倉出發去巡視,並且最終回到穀倉。 蒜頭君視力不太好,其他農場守衛只需要對農場的每一條連線不同場地的路走一遍就可以發現是不是有異常情況了。但是他很仔細和耐心,對農場的每一條連線不同場地的路需要走

習題】聖誕樹

clu 簡單 continue 先來 運算符 opera 整數 node 最短路問題 問題描述聖誕節快到了,蒜頭君準備做一棵大聖誕樹。這棵樹被表示成一組被編號的結點和一些邊的集合,樹的結點從 1 到 n 編號,樹的根永遠是 1。每個結點都有一個自身特有的數值,稱為它的權重,

習題】蒜頭君運送寶藏

scan 中一 put 中間 lca fat through 但是 con !!!原來LCA的題可以出的這麽難,完了這還屬於水題?! 先來解釋一下題意,有N個城市,在這N城市之間有M條邊(不一定每個城市都有邊)。我們的任務是找出給定兩個點之間路徑上的最小邊權

練習題兩儀劍法

info algo \n bubuko lld cst 使用 tdi -a lcm和gcd練習題:兩儀劍法 解題:就是求最小公倍數lcm:可以先用__gcd算出最大公約數,根據gcd與lcm的性質公式:gcd * lcm = a * b算出lcm。 註意:數據n和m最大為

練習題素數距離

%d 篩選 prime 最小 png 表數 cin 分享圖片 ret 計蒜客練習題:素數距離 解題思路:遍歷一遍is_prim數組 存儲[l,r]區間上是質數的數和質數總數(存儲素數表);遍歷一遍素數表數組 更新最大值 最小值機器對應的變量,最後打印即可。 AC代碼:

練習題互質數個數

互質數個數 題目: 解題思路:gcd(i,n)=1 即求與n互質的整數,也就是求尤拉函式值。 AC程式碼: #include <iostream> using namespace std; int main() { int n; cin>>n; i