Задать вопрос
Din7
@Din7
Пытаюсь программировать, CGmaster - ломастер

Как быстрее считать данные из стандартного потока?

Пишу топологическую сортировку.
В одном из тестов ограничение по времени 3 секунды, количество графов 1000 и 500 ребер (соответственно также 500 пар чисел, означающих начало и конец ребра).
Для сортировки использую матрицу смежностей matr, в которую записываю 1, если существует такое ребро из i - ого ребра в j - ое. Cчитывание i и j идет целых 7 секунд. Не могу придумать более оптимальный вариант. Может можно чем-нибудь заменить scanf?
Вот кусочек кода:

int** readbond( int** matr)
{
	int i, j;
	while (scanf("%d%d", &i, &j))
	{
		matr[i ][j] = 1;
	}
	return matr;
}
  • Вопрос задан
  • 189 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine: тариф Базовый
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Alexander1705
habrahabr.ru/post/246257
Здесь в основном для С++, но 6-ой вариант должен работать для С.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
СПЕЦПО Санкт-Петербург
от 230 000 до 350 000 ₽
Uniscan Research Новосибирск
от 140 000 до 200 000 ₽
Базис-Центр Коломна
от 70 000 до 500 000 ₽