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

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

圖結構練習——判斷給定圖是否存在合法拓撲序列

2019-11-08 02:06:28
字體:
來源:轉載
供稿:網友

sdut原題鏈接

圖結構練習——判斷給定圖是否存在合法拓撲序列 Time Limit: 1000MS Memory Limit: 65536KB

PRoblem Description 給定一個有向圖,判斷該有向圖是否存在一個合法的拓撲序列。

Input 輸入包含多組,每組格式如下。 第一行包含兩個整數n,m,分別代表該有向圖的頂點數和邊數。(n<=10) 后面m行每行兩個整數a b,表示從a到b有一條有向邊。

Output 若給定有向圖存在合法拓撲序列,則輸出YES;否則輸出NO。

Example Input 1 0 2 2 1 2 2 1

Example Output YES NO

Hint

Author 趙利強

以下為accepted代碼

#include <stdio.h>#include <string.h>int op, tp, n, m;int link[14], map[14][14], indegree[14];//拓撲排序算法核心語句void topo(){ for(int i = 1; i <= n; i++)//尋找入度為零的點 { if(indegree[i] == 0)//判斷是否是入度為零的點 link[tp++] = i;//將入度為零的點入隊 } while(op < tp)//更新的過程 { for(int i = 1; i <= n; i++)//尋找入度為當前隊列結點的點的點 { if(map[link[op]][i] == 1)//判斷是否入度為當前隊列結點 { indegree[i]--;//結點入度數目更新 if(indegree[i] == 0)//判斷更新后是否有入度為零的點 link[tp++] = i;//將更新后入度為零的點入隊 } } op++;//當前隊列結點出隊 } if(op == n)//判斷出隊結點數是否是總結點數,若是,則為合法拓撲序列,若不是,則存在有向回路 printf("YES/n"); else printf("NO/n");}int main(){ int u, v; while(scanf("%d %d", &n, &m) != EOF) { op = tp = 0;//隊列標記變量初始化 memset(map, 0, sizeof(map));//map數組初始化 memset(indegree, 0, sizeof(indegree));//indegree數組(記錄結點入度數目)初始化 for(int i = 1; i <= m; i++) { scanf("%d %d", &u, &v); map[u][v] = 1; indegree[v] += 1; } topo(); } return 0;}/***************************************************User name: Result: AcceptedTake time: 0msTake Memory: 108KBSubmit time: 2017-02-20 09:37:18****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 休宁县| 神农架林区| 临澧县| 庆阳市| 甘洛县| 九台市| 南昌市| 巍山| 于都县| 兖州市| 礼泉县| 乌拉特后旗| 南丹县| 丰都县| 九寨沟县| 韶关市| 阿拉善右旗| 阜南县| 泾源县| 荥阳市| 两当县| 龙江县| 新乡市| 清涧县| 法库县| 文登市| 修水县| 庄浪县| 余姚市| 丽水市| 东平县| 台东市| 阳城县| 井陉县| 新营市| 土默特右旗| 台湾省| 喀喇沁旗| 汤原县| 阿尔山市| 安新县|