CCF認證 送貨

2021-07-10 14:47:28 字數 1687 閱讀 7681

問題描述

為了增加公司收入,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...