解決圖論問(wèn)題,首先就要思考用什么樣的方式存儲(chǔ)圖。但是小鑫卻怎么也弄不明白如何存圖才能有利于解決問(wèn)題。你能幫他解決這個(gè)問(wèn)題么? Input
多組輸入,到文件結(jié)尾。 每一組第一行有兩個(gè)數(shù)n、m表示n個(gè)點(diǎn),m條有向邊。接下來(lái)有m行,每行兩個(gè)數(shù)u、v代表u到v有一條有向邊。第m+2行有一個(gè)數(shù)q代表詢(xún)問(wèn)次數(shù),接下來(lái)q行每行有一個(gè)詢(xún)問(wèn),輸入兩個(gè)數(shù)為a,b。 注意:點(diǎn)的編號(hào)為0~n-1,2<=n<=5000 ,n*(n-1)/2<=m<=n*(n-1),0<=q<=1000000,a!=b,輸入保證沒(méi)有自環(huán)和重邊 Output
對(duì)于每一條詢(xún)問(wèn),輸出一行。若a到b可以直接連通輸出Yes,否則輸出No。 Example Input
2 1 0 1 2 0 1 1 0 Example Output
Yes No Hint
Author
lin
bool是屬于c++的在c語(yǔ)言中_Bool相當(dāng)于c++中的bool
#include<stdio.h>#include<string.h>#include<stdlib.h>_Bool map[5000][5000];//定義圖,要放在main函數(shù)外面,否則超內(nèi)存int main(){ int n, m, u, v, i, q; while(scanf("%d%d", &n, &m) != EOF) { memset(map, 0, sizeof(map));//給圖清0 for(i = 0; i < m; i++) { scanf("%d%d", &u, &v); map[u][v] = 1; } scanf("%d", &q); for(i = 0; i < q; i++) { scanf("%d%d", &u, &v); if(map[u][v] == 1) printf("Yes/n"); else printf("No/n"); } } return 0;}儲(chǔ)存方式一:鄰接矩陣
哇,上周六早退被老師大規(guī)模抓到,血崩。。。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注