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

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

圖結構練習——BFS——從起始點到目標點的最短步數

2019-11-08 19:54:51
字體:
來源:轉載
供稿:網友

think: 1結構數組+廣度優先搜索 2逆推思想

sdut原題鏈接

圖結構練習——BFS——從起始點到目標點的最短步數 Time Limit: 1000MS Memory Limit: 65536KB PRoblem Description

在古老的魔獸傳說中,有兩個軍團,一個叫天災,一個叫近衛。在他們所在的地域,有n個隘口,編號為1..n,某些隘口之間是有通道連接的。其中近衛軍團在1號隘口,天災軍團在n號隘口。某一天,天災軍團的領袖巫妖王決定派兵攻打近衛軍團,天災軍團的部隊如此龐大,甚至可以填江過河。但是巫妖王不想付出不必要的代價,他想知道在不修建任何通道的前提下,部隊是否可以通過隘口及其相關通道到達近衛軍團展開攻擊;如果可以的話,最少需要經過多少通道。由于n的值比較大(n<=1000),于是巫妖王找到了擅長編程的你 =_=,請你幫他解決這個問題,否則就把你吃掉變成他的魔法。為了拯救自己,趕緊想辦法吧。

Input

輸入包含多組,每組格式如下。

第一行包含兩個整數n,m(分別代表n個隘口,這些隘口之間有m個通道)。

下面m行每行包含兩個整數a,b;表示從a出發有一條通道到達b隘口(注意:通道是單向的)。

Output

如果天災軍團可以不修建任何通道就到達1號隘口,那么輸出最少經過多少通道,否則輸出NO。

Example Input

2 1 1 2 2 1 2 1

Example Output

NO 1

Hint Author 趙利強

以下為accepted代碼

#include <stdio.h>#include <string.h>int map1[1002][1002], visit[2000];struct node{ int x; int ans;}q[2000];void BFS(int i, int n){ int s = 1, e = 1, j; struct node f1, f2; f1.x = i; f1.ans = 0; q[s++] = f1; visit[f1.x] = 1; while(s > e) { f1 = q[e++]; if(f1.x == 1) { printf("%d/n", f1.ans); return; } for(j = 1; j <= n; j++) { f2.x = j; if(visit[f2.x] == 0 && map1[f1.x][f2.x] == 1) { visit[f2.x] = 1; f2.ans = f1.ans + 1; q[s++] = f2; } } } printf("NO/n"); return;}int main(){ int n, m, i, a, b; while(scanf("%d %d", &n, &m) != EOF) { memset(map1, 0, sizeof(map1)); memset(visit, 0, sizeof(visit)); for(i = 0; i < m; i++) { scanf("%d %d", &a, &b); map1[a][b] = 1; } BFS(n, n); } return 0;}/***************************************************User name: Result: AcceptedTake time: 60msTake Memory: 2012KBSubmit time: 2017-02-15 21:45:57****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新民市| 久治县| 万山特区| 宜黄县| 饶阳县| 大余县| 昌都县| 威远县| 台北县| 珠海市| 柳林县| 措美县| 峡江县| 兴和县| 阿勒泰市| 雷山县| 西贡区| 五寨县| 青阳县| 武胜县| 周宁县| 寻甸| 临沭县| 鸡泽县| 葫芦岛市| 桐乡市| 磐石市| 松潘县| 卢氏县| 罗田县| 锡林郭勒盟| 盐亭县| 宝山区| 鹿邑县| 庄浪县| 禄劝| 蒙阴县| 阿城市| 庆阳市| 靖宇县| 泸州市|