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

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

圖的基本存儲的基本方式二

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

PRoblem Description

解決圖論問題,首先就要思考用什么樣的方式存儲圖。但是小鑫卻怎么也弄不明白如何存圖才能有利于解決問題。你能幫他解決這個問題么? Input

多組輸入,到文件結尾。 每一組第一行有兩個數n、m表示n個點,m條有向邊。接下來有m行,每行兩個數u、v代表u到v有一條有向邊。第m+2行有一個數q代表詢問次數,接下來q行每行有一個詢問,輸入兩個數為a,b。 注意:點的編號為0~n-1,2<=n<=500000 ,0<=m<=500000,0<=q<=500000,a!=b,輸入保證沒有自環和重邊 Output

對于每一條詢問,輸出一行。若a到b可以直接連通輸出Yes,否則輸出No。 Example Input

2 1 0 1 2 0 1 1 0 Example Output

Yes No Hint

Author

lin

#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};int main(){ int n, m, u, v, q, i; struct node *head[500005], *a, *b; while(scanf("%d%d", &n, &m) != EOF) { for(i = 0; i < 10; i++) head[i] = NULL; for(i = 0; i < m; i++) { scanf("%d%d", &u, &v); if(head[u] == NULL) { head[u] = (struct node*) malloc(sizeof(struct node)); head[u] -> data = v; head[u] -> next = NULL; } else { b = head[u] -> next;//保存null a = (struct node*) malloc(sizeof(struct node)); a -> data = v; a -> next = b;//保證最后為空 head[u] -> next = a; } } scanf("%d", &q); while(q--) { int flag = 0; scanf("%d%d", &u, &v); if(head[u] == NULL) { printf("No/n"); } else//因為是鏈表,所以每個都是一個鏈,要從頭找到尾。 { a = head[u]; while(a != NULL) { if(a -> data == v) { flag = 1; break;//找到跳出 } a = a -> next; } if(flag) printf("Yes/n"); else printf("No/n"); } } } return 0;}

儲存方式二:鄰接表


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新营市| 三门县| 罗山县| 花莲县| 砚山县| 寿宁县| 云林县| 新和县| 江源县| 衡阳市| 华容县| 威远县| 大关县| 双流县| 西华县| 成武县| 中西区| 依安县| 兴和县| 精河县| 武冈市| 叙永县| 四平市| 诏安县| 满城县| 西畴县| 增城市| 鄄城县| 金塔县| 涞源县| 砚山县| 泾川县| 镇雄县| 红原县| 镇远县| 九龙坡区| 永丰县| 息烽县| 饶河县| 永泰县| 资中县|