Descrição
teoria dos grafos para resolver o problema, é preciso primeiro pensar em que tipo de um mapa armazenado. Mas pequena Xin mas como não conseguia entender como o mapa de memória pode ajudar a resolver o problema. você pode ajudá-lo a resolver este problema?
entrada
Vários conjuntos de entrada para o final do arquivo.
A primeira linha de cada grupo de dois números de N, M representa n pontos, m artigo dirigido borda. Depois existem M fileiras de dois números de U, V representante de u para v Há uma borda dirigida. M + 2 segunda linha tem um número q representa o número de interrogação, em seguida, as linhas de q têm cada um uma consulta, a entrada de dois átomos, um b.
Nota: o número de ponto é 0 ~ N-1,2 <= n <= 5000, n * (n-1) / 2 <= m <= n * (n-1), 0 <= Q <= 1000000, uma! = b, e a entrada para assegurar que nenhum auto-ciclo peso borda
de saída
Para cada inquérito, linha de saída. Se um de b podem se comunicar diretamente saída Sim, caso contrário, No. saídas
amostra
Entrada
2 1
0 1
2
0 1
1 0
Output
Sim
Não
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
bool a[5000][5000];//用int型会超时
int main()
{
int n,m,u,v,q,x,y;
while(~scanf("%d %d",&n,&m))
{
memset(a,0,sizeof(a));
for(int i=0;i<m;i++)
{
scanf("%d %d",&u,&v);
a[u][v] = 1;
}
scanf("%d",&q);
while(q--)
{
scanf("%d %d",&x,&y);
if(a[x][y] == 1)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}