B - Die grundlegende Ausführungsform der Fig zwei grundlegende Speicher

Beschreibung

Graphentheorie das Problem zu lösen, müssen wir zuerst über das, was denken Art einer gespeicherten Karte. Aber auch kleine Xin aber wie konnte nicht verstehen , wie die Speicherkarte das Problem lösen helfen kann. Können Sie ihm dieses Problem lösen helfen?
Eingang

Mehrere Sätze von Eingang bis zum Ende der Datei.
Die erste Zeile jeder Gruppe von zwei Zahlen n, m = n Punkten, m Artikel gerichtete Kante. Dann gibt es m Reihen von zwei Zahlen u, v repräsentativ für u zu v wird eine gerichtete Kante. M + 2 zweite Reihe hat eine Zahl q , die Anzahl der Abfrage darstellt, dann q Zeilen jeweils einen Abfrage - Eingang zwei Atomen a, b.

Hinweis: Die Punktnummer ist 0 ~ n-1,2 <= n <= 500000, 0 <= m <= 500000,0 <= q <= 500000, a = b, und der Eingang , dass kein Selbstschleifenkantengewicht zu gewährleisten!
Das Ausgang

Für jede Anfrage, die Ausgangsleitung. Wenn a zu b kommunizieren kann direkt ausgegeben Ja Andernfalls gibt No.
Probe

Eingang

2 1
0 1
2
0 1
1 0
Output

Ja
Nein

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
struct node
{
    int u,v,l;
}tu[500000];
int main()
{
    int n,m,a,b,p,x,y;
    while(~scanf("%d %d",&n,&m))
    {
        for(int i=0;i<m;i++)
        {
            scanf("%d %d",&tu[i].u,&tu[i].v);
            tu[i].l = 1;
        }
        scanf("%d",&p);
        while(p--)
        {
            scanf("%d %d",&x,&y);
            int flag = 0;
            for(int i=0;i<m;i++)
            {
                if(tu[i].u == x&&tu[i].v==y&&tu[i].l == 1)
                {
                    printf("Yes\n");
                    flag = 1;
                }

            }
            if(flag == 0)
                printf("No\n");
        }
    }
    return 0;
}
Veröffentlicht 177 Originalarbeiten · erntete Lob 7 · Ansichten 30000 +

Ich denke du magst

Origin blog.csdn.net/Fusheng_Yizhao/article/details/104875408
Empfohlen
Rangfolge