提出 #53140199


ソースコード 拡げる

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include <unordered_set>
#include <random>
#ifdef _MSC_VER
#	include <intrin.h>
#	define __builtin_popcount __popcnt
#endif

#define fi first
#define se second

//#include <atcoder/all>
//using namespace atcoder;
//typedef modint998244353 mint;

using namespace std;

typedef long long int lld;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<lld, lld> pll;
typedef vector<int> vi;
typedef vector<lld> vl;
typedef vector<ld> vld;
typedef vector<char> vch;
typedef vector<string> vs;
typedef vector<bool> vb;
typedef vector<double> vd;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
typedef vector<vi> vivi;
typedef vector<vl> vlvl;
typedef vector<vch> vcvc;
typedef vector<vb> vbvb;
typedef vector<vs> vsvs;

const lld mod = 998244353LL;
const int inf = 1LL << 30;
const int nom = 3000000;

typedef struct node
{
	int b, los;
} node;

int main()
{
	cin.tie(NULL), cout.tie(NULL);
	ios::sync_with_stdio(false);

	int n, m, ln, tp, tp2, tp3, no, now = 0, idx;

	cin >> n >> m;

	vector<vector<node>> vc(n);
	vi comb, rank(n, 0), rev_rank(n, 0), rank_vit(n, 0), now_cnt(n, 0), deg(n), now_deg;
	vivi cnt(n, vi(n, 0));

	for (int i = 0; i < m; ++i)
	{
		cin >> tp >> tp2 >> tp3;

		tp--, tp2--;
		
		deg[tp2]++;
		vc[tp].push_back({ tp2, tp3 });
	}

	for (int i = 0; i < n; ++i)
	{
		if (!deg[i])
			comb.push_back(i);
	}

	ln = (int)comb.size();

	auto rng = default_random_engine{ random_device {}() };
	queue<int> que;

	for (int t = 0; t < nom; ++t)
	{
		shuffle(comb.begin(), comb.end(), rng);

		now++;
		no = 0, idx = n - 1;
		now_deg = deg;

		for (int i = 0; i < ln; ++i)
		{
			while (idx >= 0 && rank_vit[idx] == now)
				idx--;

			if (idx == -1)
			{
				no = 1;

				break;
			}

			tp = comb[i];
			rank[idx] = tp, rev_rank[tp] = idx;
			now_cnt[tp] = rank_vit[idx] = now;

			que.push(tp);

			while (!que.empty())
			{
				tp = que.front();
				que.pop();

				for (int j = 0; j < (int)vc[tp].size(); ++j)
				{
					tp2 = vc[tp][j].b, tp3 = vc[tp][j].los;

					if (rev_rank[tp] - tp3 < 0)
					{
						no = 1;

						break;
					}

					rank[rev_rank[tp] - tp3] = tp2, rev_rank[tp2] = rev_rank[tp] - tp3;
					now_cnt[tp2] = rank_vit[rev_rank[tp] - tp3] = now;
					now_deg[tp2]--;

					if (now_deg[tp2] == 0)
						que.push(tp2);
				}

				if (no)
					break;
			}

			if (no)
				break;
		}

		tp = -1, tp2 = 0;

		for (int i = 0; i < n; ++i)
		{
			if (rank_vit[i] < now)
				tp = i, tp2++;
		}

		if (tp2 >= 2)
			no = 1;
		else if (tp2 == 1)
		{
			for (int i = 0; i < n; ++i)
			{
				if (now_cnt[i] < now)
					tp2 = i;
			}

			rank[tp] = tp2, rev_rank[tp2] = tp;
		}

		if (no)
			continue;

		for (int i = 0; i < n; ++i)
		{
			for (int j = 0; j < (int)vc[i].size(); ++j)
			{
				if (rev_rank[i] - rev_rank[vc[i][j].b] != vc[i][j].los)
				{
					no = 1;

					break;
				}
			}

			if (no)
				break;
		}

		if (!no)
		{
			for (int i = 0; i < n; ++i)
				cnt[rank[i]][i] = 1;
		}
	}

	for (int i = 0; i < n; ++i)
	{
		tp = -1;
		no = 0;

		for (int j = 0; j < n; ++j)
		{
			if (cnt[i][j])
			{
				if (tp != -1)
					no = 1;

				tp = j;
			}
		}

		if (no || tp == -1)
			cout << -1;
		else
			cout << tp + 1;

		cout << ' ';
	}

	cout << '\n';

	return 0;
}

提出情報

提出日時
問題 F - Estimate Order
ユーザ surung9898
言語 C++ 17 (gcc 12.2)
得点 0
コード長 3481 Byte
結果 WA
実行時間 1821 ms
メモリ 3648 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 525
結果
AC × 3
AC × 60
WA × 2
セット名 テストケース
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt, testcase44.txt, testcase45.txt, testcase46.txt, testcase47.txt, testcase48.txt, testcase49.txt, testcase50.txt, testcase51.txt, testcase52.txt, testcase53.txt, testcase54.txt, testcase55.txt, testcase56.txt, testcase57.txt, testcase58.txt
ケース名 結果 実行時間 メモリ
sample00.txt AC 199 ms 3512 KiB
sample01.txt AC 105 ms 3376 KiB
sample02.txt AC 275 ms 3412 KiB
testcase00.txt AC 1821 ms 3644 KiB
testcase01.txt AC 516 ms 3508 KiB
testcase02.txt AC 871 ms 3512 KiB
testcase03.txt AC 1011 ms 3512 KiB
testcase04.txt AC 621 ms 3576 KiB
testcase05.txt AC 379 ms 3448 KiB
testcase06.txt AC 697 ms 3500 KiB
testcase07.txt AC 753 ms 3428 KiB
testcase08.txt AC 462 ms 3428 KiB
testcase09.txt AC 485 ms 3436 KiB
testcase10.txt AC 509 ms 3516 KiB
testcase11.txt WA 499 ms 3508 KiB
testcase12.txt AC 607 ms 3508 KiB
testcase13.txt AC 505 ms 3504 KiB
testcase14.txt AC 673 ms 3508 KiB
testcase15.txt AC 703 ms 3440 KiB
testcase16.txt AC 590 ms 3512 KiB
testcase17.txt AC 686 ms 3452 KiB
testcase18.txt AC 607 ms 3500 KiB
testcase19.txt AC 774 ms 3448 KiB
testcase20.txt AC 594 ms 3496 KiB
testcase21.txt AC 629 ms 3500 KiB
testcase22.txt AC 766 ms 3380 KiB
testcase23.txt AC 566 ms 3632 KiB
testcase24.txt AC 691 ms 3444 KiB
testcase25.txt AC 553 ms 3432 KiB
testcase26.txt AC 591 ms 3380 KiB
testcase27.txt AC 729 ms 3496 KiB
testcase28.txt AC 770 ms 3504 KiB
testcase29.txt AC 728 ms 3452 KiB
testcase30.txt AC 627 ms 3444 KiB
testcase31.txt AC 667 ms 3496 KiB
testcase32.txt AC 729 ms 3504 KiB
testcase33.txt AC 692 ms 3508 KiB
testcase34.txt AC 729 ms 3440 KiB
testcase35.txt AC 673 ms 3432 KiB
testcase36.txt AC 712 ms 3436 KiB
testcase37.txt AC 662 ms 3572 KiB
testcase38.txt AC 690 ms 3508 KiB
testcase39.txt AC 419 ms 3508 KiB
testcase40.txt AC 635 ms 3508 KiB
testcase41.txt AC 542 ms 3572 KiB
testcase42.txt AC 579 ms 3512 KiB
testcase43.txt AC 598 ms 3452 KiB
testcase44.txt AC 580 ms 3412 KiB
testcase45.txt AC 558 ms 3596 KiB
testcase46.txt AC 561 ms 3376 KiB
testcase47.txt AC 580 ms 3568 KiB
testcase48.txt AC 491 ms 3496 KiB
testcase49.txt AC 448 ms 3436 KiB
testcase50.txt AC 519 ms 3640 KiB
testcase51.txt AC 663 ms 3644 KiB
testcase52.txt WA 559 ms 3432 KiB
testcase53.txt AC 615 ms 3408 KiB
testcase54.txt AC 1425 ms 3436 KiB
testcase55.txt AC 408 ms 3496 KiB
testcase56.txt AC 1418 ms 3600 KiB
testcase57.txt AC 944 ms 3648 KiB
testcase58.txt AC 578 ms 3440 KiB