2018杭電多校第二場1003(DFS,尤拉迴路)

2022-08-17 14:39:16 字數 916 閱讀 6433

#include

using namespace std;

int n,m;

int x,y;

int num,cnt;

int degree[100007],vis[100007],viss[400040],first[100007];

vectorjidian,road[100007];

struct node

xu[400040];

void init()//初始化

void add_edge(int u,int v)//將點聯接

void dfs(int u)//尋找度數為奇數的點

}void dfss(int u)//將要走的點存進向量,繪製路線

else}}

}int main()

for(int i=1;i<=n;i++)

num++;

if(jidian.size())

dfss(jidian[0]);//從多餘的奇點出發

else

dfss(i);//否則就從隨意乙個點出發

jidian.clear();}}

printf("%d\n",num);

for(int i=1;i<=num;i++)

printf("%d\n",road[i][sizz-1]);

road[i].clear();}}

return 0;

}/*尤拉圖:圖中只有兩個度數為奇數的點,或者所有點的度數均為偶數,

這樣我們只要選擇乙個度數為奇數的點作為起點跑一遍尤拉迴路同時記錄路徑即可

(如果所有點的度數都是偶數的話就選任意乙個點就行了),

我們dfs求完尤拉路徑,然後遇到虛邊,num++,

放入另外的乙個佇列中(相當於上圖右邊切斷虛邊,變成了兩段,最後輸出所有路徑方案*/

2018暑假杭電多校第二場

問了yxz後做的。這個是我一般寫線段樹的方法,才覺得感覺有點麻煩,還是yxz的寫法安逸些 include bits stdc h define out x cout x typedef long long ll const ll maxn 5e5 5 int n,m int b maxn struc...

2019杭電多校第二場

今天也是一條鹹魚orz 場上三題 e,j,k e everything is generated in equal probability 題解 乙個長度為n的排列的逆序期望為c n,2 2 因為每一對下標的貢獻都是1 2.然後設dp i dp i dp i 為長度為i ii的隨機排列的culcul...

2019杭電多校第二場

給定乙個 n 從 1,n 中等概率取出乙個數,再等概率生成乙個 n 的全排列,再計算這個全排列的函式值,求這個函式值的期望。函式表達為輸入乙個全排列,計算其逆序數,再等概率取出乙個子串行 可以是空,可以是原序列 遞迴計算該子串行的函式值,累加返回。include using namespace st...