国产探花免费观看_亚洲丰满少妇自慰呻吟_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****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 防城港市| 平利县| 吴旗县| 玉山县| 公安县| 嘉善县| 台前县| 洱源县| 广丰县| 漳浦县| 上饶县| 开平市| 桂阳县| 塔城市| 蓝田县| 静安区| 泉州市| 苏尼特右旗| 五莲县| 峡江县| 宽城| 榆林市| 阜平县| 谢通门县| 城口县| 府谷县| 罗城| 安丘市| 贡觉县| 新竹县| 曲水县| 司法| 西贡区| 井冈山市| 永昌县| 阿勒泰市| 杭州市| 大姚县| 蓬安县| 上杭县| 林口县|