提出 #577413


ソースコード 拡げる

#include<bits/stdc++.h>
using namespace std;
#define FZ(n) memset((n),0,sizeof(n))
#define FMO(n) memset((n),-1,sizeof(n))
#define F first
#define S second
#define PB push_back
#define ALL(x) begin(x),end(x)
#define SZ(x) ((int)(x).size())
#define IOS ios_base::sync_with_stdio(0); cin.tie(0)
template<typename A, typename B>
ostream& operator <<(ostream &s, const pair<A,B> &p) {
  return s<<"("<<p.first<<","<<p.second<<")";
}
template<typename T>
ostream& operator <<(ostream &s, const vector<T> &c) {
  s<<"[ ";
  for (auto it : c) s << it << " ";
  s<<"]";
  return s;
}
// Let's Fight!

const int INF = 102938475;
typedef pair<int, int> pii;
const int MX = 10101;
int N;
int A, B, C, E;
int cls[MX];
int hao[4];
vector<int> el[MX];
pii dis[4][MX];
bool inq[MX];

void build(int start, int id_) {
	queue<int> qe;
	qe.push(start);
	auto d = dis[id_];
	for (int i=0; i<=N; i++) {
		d[i] = {INF, INF};
		inq[i] = 0;
	}
	d[start] = {0, start};
	inq[start] = 1;
	while (qe.size()) {
		int u = qe.front();
		qe.pop();
		inq[u] = false;
		pii dn = d[u];
		for (auto v: el[u]) {
			pii dx = {dn.F+1, min(dn.S, v)};
			if (d[v] > dx) {
				d[v] = dx;
				if (not inq[v]) {
					qe.push(v);
					inq[v] = true;
				}
			}
		}
	}
}

int main() {
    IOS;
	cin >> N;
	cin >> A >> B >> C;
	hao[1] = hao[2] = hao[3] = 1029384756;
#define _magic(x, y) for (int i=0; i<x; i++) { \
		int a; cin >> a; \
		cls[a] = y; \
		hao[y] = min(hao[y], a); \
	} \

	_magic(A, 1);
	_magic(B, 2);
	_magic(C, 3);
	

	cin >> E;
	for (int i=0; i<E; i++) {
		int u, v; cin >> u >> v;
		if (cls[u]) {
			u = hao[cls[u]];
		}

		if (cls[v]) {
			v = hao[cls[v]];
		}
//		if (u == v) continue;
		el[u].PB(v);
		el[v].PB(u);
	}

	for (int i=1; i<=3; i++) {
		build(hao[i], i);
	}

	pii ans = {INF, INF};

	auto add = [](pii p1, pii p2) -> pii {
		return {p1.F+p2.F, min(p1.S, p2.S)};
	};

	for (int i=1; i<=N; i++) {
		pii z{0, INF};
		for (int j=1; j<=3; j++) {
			z = add(z, dis[j][i]);
		}
		ans = min(ans, z);
	}
	cout << ans.F << ' ' << ans.S << endl;


    return 0;
}

提出情報

提出日時
問題 F - Modern Announce Network
ユーザ bcw0x1bd2
言語 C++11 (GCC 4.8.1)
得点 100
コード長 2159 Byte
結果 AC
実行時間 216 ms
メモリ 7716 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 65
セット名 テストケース
All 00_sample_00, 00_sample_01, 00_sample_02, 00_sample_03, 00_sample_04, 10_rand_00, 10_rand_01, 10_rand_02, 10_rand_03, 10_rand_04, 10_rand_05, 10_rand_06, 10_rand_07, 11_max_rand_00, 11_max_rand_01, 11_max_rand_02, 11_max_rand_03, 11_max_rand_04, 11_max_rand_05, 11_max_rand_06, 11_max_rand_07, 21_max_path_00, 21_max_path_01, 21_max_path_02, 21_max_path_03, 21_max_path_04, 21_max_path_05, 21_max_path_06, 21_max_path_07, 30_star_00, 30_star_01, 30_star_02, 30_star_03, 30_star_04, 30_star_05, 30_star_06, 30_star_07, 40_clique_00, 40_clique_01, 40_clique_02, 40_clique_03, 40_clique_04, 40_clique_05, 40_clique_06, 40_clique_07, 41_max_clique_00, 41_max_clique_01, 41_max_clique_02, 41_max_clique_03, 41_max_clique_04, 41_max_clique_05, 41_max_clique_06, 41_max_clique_07, 51_max_tree_00, 51_max_tree_01, 51_max_tree_02, 51_max_tree_03, 51_max_tree_04, 51_max_tree_05, 51_max_tree_06, 51_max_tree_07, 90_special_00, 90_special_01, 90_special_02, 90_special_03
ケース名 結果 実行時間 メモリ
00_sample_00 AC 32 ms 1684 KiB
00_sample_01 AC 26 ms 1684 KiB
00_sample_02 AC 27 ms 1680 KiB
00_sample_03 AC 28 ms 1584 KiB
00_sample_04 AC 26 ms 1676 KiB
10_rand_00 AC 85 ms 3428 KiB
10_rand_01 AC 31 ms 1936 KiB
10_rand_02 AC 153 ms 4804 KiB
10_rand_03 AC 80 ms 3044 KiB
10_rand_04 AC 164 ms 7076 KiB
10_rand_05 AC 132 ms 5908 KiB
10_rand_06 AC 163 ms 6416 KiB
10_rand_07 AC 161 ms 5528 KiB
11_max_rand_00 AC 137 ms 4784 KiB
11_max_rand_01 AC 152 ms 5300 KiB
11_max_rand_02 AC 49 ms 2336 KiB
11_max_rand_03 AC 148 ms 4624 KiB
11_max_rand_04 AC 172 ms 7716 KiB
11_max_rand_05 AC 61 ms 2608 KiB
11_max_rand_06 AC 216 ms 6972 KiB
11_max_rand_07 AC 132 ms 4524 KiB
21_max_path_00 AC 35 ms 1968 KiB
21_max_path_01 AC 38 ms 2080 KiB
21_max_path_02 AC 35 ms 1824 KiB
21_max_path_03 AC 34 ms 1840 KiB
21_max_path_04 AC 35 ms 1740 KiB
21_max_path_05 AC 34 ms 1840 KiB
21_max_path_06 AC 34 ms 1964 KiB
21_max_path_07 AC 35 ms 1968 KiB
30_star_00 AC 35 ms 1960 KiB
30_star_01 AC 29 ms 1812 KiB
30_star_02 AC 34 ms 1828 KiB
30_star_03 AC 34 ms 1760 KiB
30_star_04 AC 29 ms 1584 KiB
30_star_05 AC 30 ms 1716 KiB
30_star_06 AC 30 ms 1804 KiB
30_star_07 AC 29 ms 1940 KiB
40_clique_00 AC 33 ms 1844 KiB
40_clique_01 AC 110 ms 4656 KiB
40_clique_02 AC 32 ms 1840 KiB
40_clique_03 AC 58 ms 2800 KiB
40_clique_04 AC 80 ms 3748 KiB
40_clique_05 AC 90 ms 3996 KiB
40_clique_06 AC 154 ms 5272 KiB
40_clique_07 AC 45 ms 2228 KiB
41_max_clique_00 AC 169 ms 5668 KiB
41_max_clique_01 AC 175 ms 5672 KiB
41_max_clique_02 AC 181 ms 7708 KiB
41_max_clique_03 AC 180 ms 5996 KiB
41_max_clique_04 AC 176 ms 6180 KiB
41_max_clique_05 AC 186 ms 7456 KiB
41_max_clique_06 AC 170 ms 5672 KiB
41_max_clique_07 AC 178 ms 6044 KiB
51_max_tree_00 AC 36 ms 2060 KiB
51_max_tree_01 AC 34 ms 1976 KiB
51_max_tree_02 AC 33 ms 1716 KiB
51_max_tree_03 AC 33 ms 1744 KiB
51_max_tree_04 AC 33 ms 1844 KiB
51_max_tree_05 AC 32 ms 1844 KiB
51_max_tree_06 AC 33 ms 1964 KiB
51_max_tree_07 AC 35 ms 1964 KiB
90_special_00 AC 33 ms 1844 KiB
90_special_01 AC 33 ms 1840 KiB
90_special_02 AC 34 ms 2000 KiB
90_special_03 AC 33 ms 1976 KiB