P1341 無序字母對

2021-09-08 22:47:50 字數 1461 閱讀 8332

給定n個各不相同的無序字母對(區分大小寫,無序即字母對中的兩個字母可以位置顛倒)。請構造乙個有n+1個字母的字串使得每個字母對都在這個字串**現。

輸入格式:

第一行輸入乙個正整數n。

以下n行每行兩個字母,表示這兩個字母需要相鄰。

輸出格式:

輸出滿足要求的字串。

如果沒有滿足要求的字串,請輸出「no solution」。

如果有多種方案,請輸出前面的字母的ascii編碼盡可能小的(字典序最小)的方案

輸入樣例#1:

4

aztz

xtax

輸出樣例#1:

xaztx

【資料規模與約定】

不同的無序字母對個數有限,n的規模可以通過計算得到。

這題是尤拉迴路的裸題

但是有兩個地方需要注意

1.在函式中輸出不能使用傳值變數為迴圈變數

2.ios::sync容易引起re!、

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int maxn=4001;8

void read(int &n)913

while(c>='

0'&&c<='9'

)14

15 flag==1?n=-x:n=x;16}

17int

n; 18

intmap[maxn][maxn];

19int

indegree[maxn];

20int

ans[maxn];

21int flag=0;22

void dfs(int num,int

now)

2331

for(int i=65;i<=127;i++)

3241

}42 ans[now]=0;43

}44intmain()

4559}60

int tot=0;61

int bgji=0x7fff,bgou=0x7ffff;62

for(int i=65;i<=127;i++)

6369

else

if(indegree[i])

70 bgou=min(i,bgou);71}

72if(tot!=0&&tot!=2)73

77 tot==0?

78 dfs(bgou,1

):79 dfs(bgji,1

);80

return0;

81 }

P1341 無序字母對

給定n個各不相同的無序字母對 區分大小寫,無序即字母對中的兩個字母可以位置顛倒 請構造乙個有n 1個字母的字串使得每個字母對都在這個字串中出現。輸入格式 第一行輸入乙個正整數n。以下n行每行兩個字母,表示這兩個字母需要相鄰。輸出格式 輸出滿足要求的字串。如果沒有滿足要求的字串,請輸出 no solu...

P1341 無序字母對

題目乍一看就是 dfs 拼接字母,但是資料量不一定純 dfs 暴力就能解決,所以我們換個角度,每個相同的字母可以連在一起,我們最終是要給他們連成乙個句子,那麼我們把每個相同的單詞看做節點,這就是個尤拉迴路啊。那麼這樣就好處理了,開始判斷,因為一共最多 52 個字母,所以只有 52 個點,我們記錄入度...

落谷P1341無序字母對

題目描述 給定n個各不相同的無序字母對 區分大小寫,無序即字母對中的兩個字母可以位置顛倒 請構造乙個有n 1個字母的字串使得每個字母對都在這個字串中出現。輸入格式 第一行輸入乙個正整數n。以下n行每行兩個字母,表示這兩個字母需要相鄰。輸出格式 輸出滿足要求的字串。如果沒有滿足要求的字串,請輸出 no...