問題描述
為了增加公司收入,f公司新開設了物流業務。由於f公司在業界的良好口碑,物流業務一開通即受到了消費者的歡迎,物流業務馬上遍及了城市的每條街道。然而,f公司現在只安排了小明乙個人負責所有街道的服務。
任務雖然繁重,但是小明有足夠的信心,他拿到了城市的地圖,準備研究最好的方案。城市中有n個交叉路口,m條街道連線在這些交叉路口之間,每條街道的首尾都正好連線著乙個交叉路口。除開街道的首尾端點,街道不會在其他位置與其他街道相交。每個交叉路口都至少連線著一條街道,有的交叉路口可能只連線著一條或兩條街道。
小明希望設計乙個方案,從編號為1的交叉路口出發,每次必須沿街道去往街道另一端的路口,再從新的路口出發去往下乙個路口,直到所有的街道都經過了正好一次。
輸入格式
輸入的第一行包含兩個整數n, m,表示交叉路口的數量和街道的數量,交叉路口從1到n標號。
接下來m行,每行兩個整數a, b,表示和標號為a的交叉路口和標號為b的交叉路口之間有一條街道,街道是雙向的,小明可以從任意一端走向另一端。兩個路口之間最多有一條街道。
輸出格式
如果小明可以經過每條街道正好一次,則輸出一行包含m+1個整數p1, p2, p3, ..., pm+1,表示小明經過的路口的順序,相鄰兩個整數之間用乙個空格分隔。如果有多種方案滿足條件,則輸出字典序最小的一種方案,即首先保證p1最小,p1最小的前提下再保證p2最小,依此類推。
如果不存在方案使得小明經過每條街道正好一次,則輸出乙個整數-1。
樣例輸入
4 51 2
1 31 4
2 43 4
樣例輸出
1 2 4 1 3 4
評測用例規模與約定
前30%的評測用例滿足:1 ≤ n ≤ 10, n-1 ≤ m ≤ 20。
前50%的評測用例滿足:1 ≤ n ≤ 100, n-1 ≤ m ≤ 10000。
所有評測用例滿足:1 ≤ n ≤ 10000,n-1 ≤ m ≤ 100000。
#include#include#include#include#define n 10010
using namespace std;
vectorhead[n];
stackway;
long int n;
bool visited[n][n];
bool vis[n];
long long int d[n];
void addedge(long int x,long int y)
void dfs(int u) }}
void euler(long int u)
//以前總是得90分的原因就是沒有考慮圖不連通的情況
//這裡從第乙個點出發dfs所有的點,最後檢驗即可
dfs(1);
bool flag=0;
for(int i=1; i<=n; i++)
if(vis[i]==0)
//如果是不連通的,直接輸出-1
if(flag==1) cout<<-1;
else
if(odd_num>2)
cout<<-1;
else {
cout<<1;
euler(1);
while(!way.empty()) {
cout<<' '<
順便說一句,明天就是藍橋杯考試啦,希望可以進決賽↖(^ω^)↗
CCF認證 2017 12 遊戲
問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數 即...
ccf認證 201712 2 遊戲
題目 問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位...
自學CCF認證考題
1.fill函式 可以為陣列或者vector中的每個元素賦以相同的值,通常用於初始化!賦值範圍為 first,last 所賦的值為 val fill 給一位陣列賦值 include include using namespace std int v 10 int main int argc,char...