sdut oj圖的基本存儲的基本方式一

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

題目描述

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

輸入

 多組輸入,到文件結尾。

每一組第一行有兩個數nm表示n個點,m條有向邊。接下來有m行,每行兩個數uv代表uv有一條有向邊。第m+2行有一個數q代表詢問次數,接下來q行每行有一個詢問,輸入兩個數爲ab

注意:點的編號爲0~n-12<=n<=5000 n*(n-1)/2<=m<=n*(n-1)0<=q<=1000000a!=b,輸入保證沒有自環和重邊

輸出

 對於每一條詢問,輸出一行。若ab可以直接連通輸出Yes,否則輸出No

示例輸入

2 1
0 1
2
0 1
1 0

示例輸出

Yes
No

基於鄰接矩陣的存儲方式


#include <bits/stdc++.h>
using namespace std;
bool map1[5005][5001];
int main()
{
    int n,m,u,v,q;
    while(~scanf("%d%d",&n,&m))
    {
        memset(map1,0,sizeof(map1));
        for(int i=0;i<m;i++)
        {
            scanf("%d%d",&u,&v);
            map1[u][v]=1;
        }
         scanf("%d",&q);
         for(int i=0;i<q;i++)
         {
             scanf("%d%d",&u,&v);
             if(map1[u][v]==1)
                printf("Yes\n");
             else
                printf("No\n");
         }
    }
    return 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章