歐拉回路 & 歐拉路徑
阿新 • • 發佈:2018-09-22
oid main amp turn The clas names sca 歐拉路
歐拉路徑 & 歐拉回路
概念
歐拉路徑: 如果圖 G 種的一條路徑包括所有的邊,且僅通過一次的路徑.
歐拉回路: 能回到起點的歐拉路徑.
混合圖: 既有無向邊又有無向邊的圖.
板子題
[USACO Section 3.3] 騎馬修柵欄 Riding the Fences
Code
#include<bits/stdc++.h> using namespace std; int g[1501][1501]; int du[1501],sta[1501]; int n,e,top,i,j,x,y,st=1,m,mi,p; void dfs(int i) { for(int j=1;j<=m;++j) if(g[i][j]) { g[i][j]--; g[j][i]--; dfs(j); } sta[++top]=i; } int main() { scanf("%d",&e); for(i=1;i<=e;++i) { scanf("%d%d",&x,&y); ++g[y][x]; ++g[x][y]; du[x]++; du[y]++; m=max(max(x,y),m); } for(i=1;i<=m;++i) if(du[i]%2) {st=i;break;} dfs(st); for(i=top;i>=1;--i) printf("%d\n",sta[i]); return 0; }
歐拉回路 & 歐拉路徑