国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據結構實驗之圖論四:迷宮探索

2019-11-08 01:39:11
字體:
來源:轉載
供稿:網友

PRoblem Description 有一個地下迷宮,它的通道都是直的,而通道所有交叉點(包括通道的端點)上都有一盞燈和一個開關;請問如何從某個起點開始在迷宮中點亮所有的燈并回到起點? Input

連續T組數據輸入,每組數據第一行給出三個正整數,分別表示地下迷宮的結點數N(1 < N <= 1000)、邊數M(M <= 3000)和起始結點編號S,隨后M行對應M條邊,每行給出一對正整數,表示一條邊相關聯的兩個頂點的編號。

Output

若可以點亮所有結點的燈,則輸出從S開始并以S結束的序列,序列中相鄰的頂點一定有邊,否則只輸出部分點亮的燈的結點序列,最后輸出0,表示此迷宮不是連通圖。 訪問頂點時約定以編號小的結點優先的次序訪問,點亮所有可以點亮的燈后,以原路返回的方式回到起點。 Example Input

1 6 8 1 1 2 2 3 3 4 4 5 5 6 6 4 3 6 1 5

Example Output

1 2 3 4 5 6 5 4 3 2 1


#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int map[3100][3100];int book[3100],a[3100];int n,m,num;void dfs(int s){ int i; book[s]=1; a[num++]=s; for(i=1;i<=n;i++) { if(map[s][i]&&!book[i]) { book[i]=1; dfs(i); a[num++]=s; } }}int main(){ int t,s,i,j,u,v; cin>>t; while(t--) { memset(map,0,sizeof(map)); memset(book,0,sizeof(book)); memset(a,0,sizeof(a)); cin>>n>>m>>s; for(i=0;i<m;i++) { cin>>u>>v; map[u][v]=map[v][u]=1; } num=0; dfs(s); for(i=0;i<num;i++) { if(i) putchar(' '); printf("%d",a[i]); } if(num!=2*n-1) printf(" 0"); printf("/n"); } return 0;}/***************************************************User name: Result: AcceptedTake time: 16msTake Memory: 27544KBSubmit time: 2017-02-20 17:04:48****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹阳市| 北安市| 二手房| 天长市| 庆云县| 松桃| 永康市| 惠州市| 杭锦旗| 太康县| 资阳市| 盐源县| 桐梓县| 巫溪县| 桂东县| 县级市| 高台县| 全州县| 乐清市| 财经| 禹城市| 治多县| 东海县| 永城市| 错那县| 陈巴尔虎旗| 平凉市| 德阳市| 崇信县| 安阳县| 广饶县| 青州市| 长治市| 顺义区| 江孜县| 柏乡县| 永康市| 翼城县| 长乐市| 勐海县| 绥德县|