Ориентированный граф задан списком ребер. Проверьте,
содержит ли он мультиребра.
Вход. Первая строка содержит количество
вершин в графе n (1 ≤ n ≤ 100) и количество ребер m (1 ≤ m ≤ 10000). Затем следует m
пар чисел – ребра графа.
Выход. Выведите
YES, если граф содержит мультиребра и NO в противном случае.
Пример входа 1 |
Пример выхода 1 |
3 4 1 2 2 3 1 3 2 1 |
NO |
|
|
Пример входа 2 |
Пример выхода 2 |
3 4 1 2 2 3 1 3 2 3 |
YES |
графы
Пусть g – квадратная
матрица размера n, изначально
обнулим ее. Для каждого ребра (i, j) увеличим g[i][j] на 1. Поскольку граф ориентированный, то как только значение некоторой ячейки g[i][j] станет больше 1, то в гафе
появляется мультиребро.
Графы,
приведенные в примерах, имеют вид:
Читаем входные данные. Для каждого ребра (i,
j) увеличим g[i][j] на 1.
Как только в графе появится мультиребро, установим flag = 1.
scanf("%d %d",&n,&m);
memset(g,0,sizeof(g));
flag
= 0;
for(i
= 0; i < m; i++)
{
scanf("%d
%d",&a,&b);
g[a][b]++;
if (g[a][b]
> 1) flag = 1;
}
В зависимости от значения переменной flag выводим ответ.
if
(flag)
puts("YES");
else
puts("NO");
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int m = con.nextInt();
int g[][] = new int[n+1][n+1];
int flag = 0;
for(int i = 0; i < m; i++)
{
int a = con.nextInt();
int b = con.nextInt();
g[a][b]++;
if (g[a][b] > 1) flag = 1;
}
if (flag == 1)
System.out.println("YES");
else
System.out.println("NO");
con.close();
}
}