t1 尤拉迴路 hdu 1878
題目大意:
判斷是否存在尤拉迴路
思路:乙個無向圖存在尤拉迴路的條件為所有點的度為偶數 且圖聯通
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define ll long long
10#define inf 2139062143
11#define maxn 10100
12using
namespace
std;
13 inline int
read()
1417
while(isdigit(ch))
18return x*f;19}
20int n,m,fa[maxn],fst[maxn],nxt[maxn<<3],to[maxn<<3
],d[maxn],cnt;
21void add(int u,int v)
22int find(int x)
23void merge(int a,int b)
24int
main()
2533
for(int i=1;iif(find(i)!=find(i+1))
34for(int i=1;i<=n;i++) if(d[i]&1)
35 puts("1"
);36
ed:;37}
38 }
t2 ant trip hdu 3018
題目大意:
最少次一筆畫可以遍歷所有邊
思路:獨立的點對答案沒有貢獻
每個聯通塊如果奇數度的點等於0 ans+1
大於0 ans+=奇數點數/2
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define ll long long
10#define inf 2139062143
11#define maxn 100100
12using
namespace
std;
13 inline int
read()
1417
while(isdigit(ch))
18return x*f;19}
20int n,m,fa[maxn],fst[maxn],nxt[maxn<<2],to[maxn<<2
],d[maxn],cnt,ans,sz[maxn],k[maxn];
21void add(int u,int v)
22int find(int x)
23void merge(int a,int b)
24int
main()
2533
for(int i=1;i<=n;i++) sz[find(i)]++;
34for(int i=1;i<=n;i++) if(d[i]&1) k[find(i)]++;
35for(int i=1;i<=n;i++) if(fa[i]==i&&sz[i]>1) ans+=k[i]?k[i]>>1:1
;36 printf("
%d\n
",ans);37}
38 }
t3 john『s trip poj 1041
題目大意:
求圖中是否存在尤拉迴路 並求出任意乙個尤拉迴路
思路:判尤拉迴路就用度數判一下
然後dfs就行了
但是改變了dfs和把邊加入棧的順序 就wa了
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define ll long long
10#define inf 2139062143
11#define maxn 5010
12using
namespace
std;
13 inline int
read()
1417
while(isdigit(ch))
18return x*f;19}
20int rt,n,m,to[maxn],e[45
][maxn],d[maxn],cnt,st[maxn],top,vis[maxn];
21void dfs(int
x)2225}
26void
solve()
2729
dfs(rt);
30for(int i=top;i>1;i--) printf("
%d "
,st[i]);
31 printf("
%d\n
",st[1
]);32}33
intmain()
34c=read(),e[a][c]=b,e[b][c]=a,d[a]++,d[b]++,cnt++;}
41 memset(e,0,sizeof(e));memset(d,0,sizeof(d));cnt=top=0
;42 memset(vis,0,sizeof
(vis));43}
44 }
t4 太鼓達人 bzoj 3033
題目大意:
給定k 求最長長度的01串
把這個串變成環 使這個環所有長度為k的子串互不相同
輸出這個串的最長長度 並輸出字典序最小的串
思路:可以發現有1使用dfs搜尋 爆搜能過的原因是因為原圖是乙個尤拉圖
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define ll long long
10#define inf 2139062143
11#define maxn 6010
12using
namespace
std;
13 inline int
read()
1417
while(isdigit(ch))
18return x*f;19}
20int
n,t,vis[maxn],ans[maxn];
21int dfs(int x,int
cnt)
2229
intmain()
30
尤拉迴路 輸出尤拉迴路的路徑
有向or無向均可,重邊 step1 從u開始,找到與他相連的v,放入棧,刪除 u,v 這條邊,然後從v開始 step2 當有一點沒有與他相連的點時,放入path,然後從stack取棧頂繼續開始找點刪邊。最後記得把棧裡的點放到path中。path倒序輸出 需要先找到起點 鄰接表法,適合稀疏圖 incl...
尤拉迴路 UOJ117 尤拉迴路 題解
判斷無向圖和有向圖是不是尤拉迴路。如果是,求出任意一條尤拉迴路。判斷尤拉迴路 證明?我不會啊!怎麼求尤拉迴路呢?因為已經確定了是尤拉迴路,所以我們可以直接dfs瞎搞。隨便從乙個點開始dfs,一條邊走過後就刪除。回溯時將其入隊。最後的佇列反過來就是答案。原理 最後的佇列是返回路徑,所以反過來就是答案。...
HDU 1878 尤拉迴路(判斷尤拉迴路)
題目大意 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?解題思路 判斷無向圖是否存在尤拉迴路,判斷每個點的度數是否為偶數 並查集確認連通性。1 include2 include3 include4 define clr arr,val...