[洛谷P1341]無序字母對

題目大意:給一張無向圖,找一條字典序最小的歐拉路徑

題解:若圖不連通或有兩個以上的奇數點,則沒有歐拉路徑,可以$dfs$,在回溯時把這個節點加入答案

卡點:沒有在回溯時加入答案,導致出現了歐拉路徑沒走環(少走了一段)

?

C++ Code:

#include <cstdio>
#include <cctype>
#include <algorithm>
#define maxn 60
int m, start = 52, ind[maxn];
int v[maxn], n, ret[256];
bool e[maxn][maxn];
char ans[maxn * maxn];int f[maxn];
int find(int x) {return x == f[x] ? x : (f[x] = find(f[x]));}void dfs(int u) {for (int i = 1; i <= n; i++) if (e[u][i]) {e[u][i] = e[i][u] = false;dfs(i);}ans[m--] = v[u];
}
int main() {scanf("%d", &m);for (int i = 'A'; i <= 'Z'; i++) v[++n] = i, ret[i] = n;for (int i = 'a'; i <= 'z'; i++) v[++n] = i, ret[i] = n;for (int i = 1; i <= n; i++) f[i] = i;for (int i = 0; i < m; i++) {char ch = getchar();while (!isalpha(ch)) ch = getchar();int a = ret[static_cast<int> (ch)], b;ch = getchar();while (!isalpha(ch)) ch = getchar();b = ret[static_cast<int> (ch)];start = std::min(start, std::min(a, b));e[a][b] = e[b][a] = true;ind[a]++, ind[b]++;f[find(a)] = find(b);}int cnt = 0;for (int i = 1; i <= n; i++) if (ind[i] && f[i] == i) cnt++;if (cnt > 1) {puts("No Solution");return 0;}cnt = 0;for (int i = 1; i <= n; i++) if (ind[i] & 1) {if (!cnt) start = i;cnt++;}if (cnt > 2) {puts("No Solution");return 0;}dfs(start);puts(ans);return 0;
}

  

轉載于:https://www.cnblogs.com/Memory-of-winter/p/10014705.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537436.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

產品部門四大角色——PM/PD/UE/UI

按照產品從規劃到最終成型的任務流方向&#xff0c;從抽象到具體、商業到技術的過程&#xff0c;涉及產品經理、產品設計師、用戶體驗師、視覺設計師四個角色。 PM&#xff1a;產品經理&#xff0c;俗稱老大。一個產品&#xff0c;首先由PM來分析細分市場、目標客戶的訴求&…

拉取遠程分支_git clone切換分支步驟,代理設置,作者信息設置

1.克隆遠程倉庫git clone git地址2.查看所有分支git branch –a3.切換分支git checkout branchName4.查看當前所在分支git branch5.拉取代碼git pull6.提交代碼git add file/folder git commit -m comment git push可能遇到的問題&#xff1a;A.error: fatal: unable to acce…

[學習筆記]半平面交

一個直線把平面分成兩部分&#xff0c;就是兩個半平面 處理這兩個平面的交的信息&#xff0c;就是半平面交 推薦&#xff1a; 計算幾何之半平面交算法模板及應用 bzoj 2618 半平面交模板學習筆記 【總結】半平面交 可以用于求任意多邊形交&#xff0c;任意多邊形內核。 &#x…

Project計算項目進度

1.設立根節點 2.資源列表 3.資源成本 4.基準 在任務分配狀況 視圖里&#xff0c;添加“基線工時”“實際工時”“BCWS(計劃&#xff09;”“ACWP(實際&#xff09;”“BCWP&#xff08;掙值&#xff09;”&#xff0c;“SV(>0 提前&#xff0c;<0 延后&#xff09;”、…

jquery動態綁定事件的方法_Jquery綁定事件及動畫效果

綁定事件bind(type, data, fuc)one(type, data, fuc) //只執行一次常見事件類型名稱含義blur失去焦點focus獲得焦點load加載resize重置大小scroll滾動unload卸載click點擊dblclick雙擊mousedown鼠標按下mouseup鼠標彈起mousemove鼠標移動mouseover鼠標懸停mouseout鼠標移走mous…

需求調研前的準備工作

1.需求調研前需要做哪些準備&#xff1f; 1.從各種渠道了解客戶所在行業的行業信息&#xff1b; 2.向和對方有過業務接觸的同事了解對方的信息如現哪些系統和業務流程、對方的管理組織結構是怎樣的&#xff1b; 3.是否可以搜集到對方的一些文字情信息如業務單據、管理規范等。 …

實驗 5 編寫、調試具有多個段的

實驗任務 &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff09; 若將最后一條指令”end start“改為”end“&#xff0c;&#xff08;3&#xff09;中的程序仍然可以正常執行。 原因&#xff1a;如果不指明程序的入口&am…

hbuilderx的快捷鍵整理pdf_mac鍵盤快捷鍵詳解,蘋果電腦鍵盤快捷鍵圖文教程

作為 Apple 最成熟的系統之一&#xff0c;macOS 已經成為許多人每天都在接觸的生產力工具。為了幫助大家更好地了解 macOS 的生態魅力&#xff0c;我們整理了這份融合了文字圖片和動圖的mac鍵盤快捷鍵詳解&#xff0c;希望能夠幫助你掌握更多系統使用技巧。文章所有操作都基于 …

word插入圖片顯示不全

word插入圖片&#xff0c;顯示不全&#xff0c;只有部分。 調整步驟 圖片尾部 光標定位到圖片的尾部 單倍行距 右鍵&#xff0c;選擇“段落”&#xff0c;行間距選擇“單倍行距” 圖片就完成顯示了

理解 JavaScript 作用域

上一篇文章中分析了 JS 中的數據類型和變量。這一篇文章將分析作用域&#xff0c;以及回答上一篇文章中變量提升的原因。 什么是作用域 作用域是一套規則&#xff0c;保存著變量&#xff0c;等待被引擎所查找。 var a 1; console.log(a); // > 1 console.log(b); // >…

mysql行求和

SELECT 列1 列2 列3 …… 列N AS Total FROM 表 SELECT sum(列1 列2 列3 …… 列N) AS Total FROM 表 轉載于:https://www.cnblogs.com/weilovehua/p/10024624.html

python安裝后在哪里找_python安裝后的目錄在哪里

從官網下載python的安裝包&#xff0c;安裝過程中可選擇裝在C盤或D盤或者其他的磁盤。 如果忘記了安裝在哪里&#xff0c;可以在命令行中使用以下命令 where python 會顯示python的絕對路徑 C:\Users\Administrator>where python C:\Users\Administrator\AppData\Local\Prog…

Axure原型設計導出到PDF文件

Axure 沒有直接導出PDF文件的功能&#xff0c;可以通過Axure 的打印功能&#xff0c;選擇PDF打印機&#xff0c;以間接的方式將原型設計導出到pdf文件里。 操作步驟 以Axure9為例 打印 Axure9---文件---打印 不要母版 預覽 預覽下效果&#xff0c;看下是否有不必要的內容 …

izoak028

離散數學 &#xff08;自考&#xff09; 【自考】計算機網絡原理精講(2018版)轉載于:https://www.cnblogs.com/qianyindichang2/p/10025538.html

Word查找替換詳細用法及通配符一覽表

使用通配符 要查找“?”或者“*”&#xff0c;可輸入“\?”和“\*”&#xff0c;\1\2\3依次匹配數對括號內容 查找(a)12(b) 替換\2XY\1 結果&#xff1a;bXYa ([.0-9]) [MG]B 匹配文件大小&#xff0c; 例1: 201 MB ,例2: 2.51 GB <(e*r)> 匹配“…

python pca降維_機器學習的降維打擊

文章發布于公號【數智物語】 (ID&#xff1a;decision_engine)&#xff0c;關注公號不錯過每一篇干貨。來源 | SAMshare(id:SAMshare)作者 | samshare"本次主要講解的內容就是特征降維&#xff0c;主要涉及PCA以及一些常見分析方法。"01Index一&#xff0c;PCA降維算…

什么樣的項目是成功的?

項目成功的標準是什么&#xff1f; 項目范圍控制住&#xff0c;成本沒超標&#xff0c;質量達標&#xff0c;進度按計劃&#xff0c;順利驗收。做到這些就是項目成功了嗎&#xff1f; 答案顯然是不一定&#xff01;&#xff01;! 有多少項目的成本、進度、目標都能夠嚴格按照…

ng-notadd 0.10.1,基于 Angular7 和 material2 的中后臺解決方案

更新內容修復 scss左側導航欄美化修復導航欄 2px 間隔問題技術棧TypescriptAngularMaterial2rxjsGraphql相關鏈接項目地址DEMOng-notadd-mock-serverQuick startgit clone https://github.com/notadd/ng-notadd.gitcd ng-notaddnpm installnpm start# or use ng cling serve復制…

python需要什么包裝_python學習之包裝與授權

實現授權的關鍵點就是覆蓋__getattr__()方法&#xff0c;在代碼中包含一個對getattr()內建函數的調用。 特別調用getattr()以得到默認對象屬性&#xff08;數據屬性或者方法&#xff09;并返回它以便訪問或調用。 特殊方法__getattr__()的工作方式是&#xff0c;當搜索一個屬性…

參加技術培訓前的輔導,選得對,學得好

最近幾年&#xff0c;每年都會有人問我培訓班的事情&#xff0c;我也有培訓班經歷&#xff0c;在軟件行業工作了十多年&#xff0c;每次解答培訓班的咨詢我都很認真&#xff0c;也很高興能幫到他人。 決定通過專欄的形式解答培訓班常見問題&#xff0c;我把專欄取名“技術培訓…