提出 #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 | ||||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |