SGU 101 Domino 尤拉路徑

2021-07-11 08:52:19 字數 946 閱讀 1031

n個多公尺諾骨牌,每個骨牌左右兩側分別有乙個0~6的整數(骨牌可以旋轉以調換其左右兩數),求一種把這些骨牌從左到右排列的方案,使得所有相鄰的兩數字相等(即左邊骨牌右側的數字等於右邊骨牌左側的數字)。

把數字當成點,骨牌當做邊。構成無向圖,求一發尤拉道路即可。

無向圖求尤拉路徑還是很好寫的。

尤拉路徑深入講解:

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 200 + 5, maxm = 6 + 5;

struct edge;

int tot = 0;

edge edge[maxn];

stack

s;int pa[maxn], head[maxm], cnt[maxm];

bool vis[maxn];

int _find(int a)

void unite(int a, int b)

bool same(int a, int b)

void add_edge(int u, int v, int id)

void dfs(int u)

}}int main (void)

int be = -1;

int ans = 0;

for(int i = 0; i <= 6; i++)

}if(ans != 0 && ans != 2) return

cout

<<"no solution"

<0;

for(int i = 0; i <= 6; i++)

}dfs(be);

while(!s.empty())

sgu 101 Domino 尤拉路徑 DFS

include include int n,e 11 11 num 11 t 0,flag struct nodec 101 d 101 void dfs int u,int num for int i 0 i 6 i if e u i 0 int main else if c i x d j y ...

SGU101 Domino 尤拉迴路

給定你n張骨牌,每張牌左右兩端有乙個數字,每張牌的左右兩端數字可以顛倒,找出一種擺放骨牌的順序,使得相鄰骨牌的兩端數字相同 最左邊骨牌的最左端和最右邊骨牌的最右端可以不管 最先想到把每個數字縮成點,然後發現這樣連邊都有問題,於是翻了翻各種題解,大概是這樣的 把每個骨牌縮成兩條邊,分別對應正反兩種情況...

sgu 101 Domino 解題報告及測試資料

101.domino time limit per test 0.25 sec.memory limit per test 4096 kb 題解 求多公尺諾骨牌按照一定方式放置能否使相鄰的位置數字相同。其實就是求無向圖的尤拉通路,dfs即可。但需要注意以下幾點 1 注意是否是連通圖。2 注意自環。3...