답안 #69041

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
69041 2018-08-19T14:57:46 Z reality Dungeon 2 (JOI16_dungeon2) C++17
90 / 100
40 ms 3044 KB
#include "dungeon2.h"
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define ll long long
#define dbg(v) cerr<<#v<<" = "<<v<<'\n'
#define vi vector<int>
#define vl vector <ll>
#define pii pair<int,int>
#define vii vector < pii >
#define mp make_pair
#define db long double
#define pb push_back
#define all(s) s.begin(),s.end()
template < class P , class Q > ostream& operator<<(ostream& stream, pair < P , Q > v){ stream << "(" << v.fi << ',' << v.se << ")"; return stream;}
template < class T > ostream& operator<<(ostream& stream, const vector<T> v){ stream << "[ "; for (int i=0; i<(int)v.size(); i++) stream << v[i] << " "; stream << "]"; return stream;}
template < class T > T smin(T &a,T b) {if (a > b) a = b;return a;}
template < class T > T smax(T &a,T b) {if (a < b) a = b;return a;}
const int N = 256;
int deg[N];
int roads[N][N];
vector < pii > g[N];
vi G[N];
int pr[N];
int D[N][N];
int ans[N];
int n;
void dfs(int node) {
	pr[node] = LastRoad();
	deg[node] = NumberOfRoads();
	for (int i = 1;i <= deg[node];++i) {
		Move(i,2);
		int col = Color();
		if (col == 1) {
			g[node].pb(mp(i,++n));
			dfs(n);
		} else {
			if (col == 2)
				G[node].pb(i);
			Move(LastRoad(),col);
		}
	}
	if (pr[node] != -1)
		Move(pr[node],3);
}
void DFS(int node,int K) {
	for (auto it : G[node]) {
		Move(it,(node / K) % 3 + 1);
		roads[node][it] += (Color() - 1) * K;
		Move(LastRoad(),Color());
	}
	for (auto it : g[node]) {
		Move(it.fi,(node / K) % 3 + 1);
		DFS(it.se,K);
	}
	if (pr[node] != -1)
		Move(pr[node],(node / K) % 3 + 1);
}
void Inspect(int R) {
	dfs(++n);
	int pw = 1;
	for (int i = 0;i < 5;++i) {
		DFS(1,pw);
		pw *= 3;
	}
	for (int i = 1;i <= n;++i)
		for (int j = 1;j <= n;++j)
			if (i != j)
				D[i][j] = 1e9;
	for (int i = 1;i <= n;++i) {
		for (int j = 1;j <= deg[i];++j)
			if (roads[i][j])
				D[i][roads[i][j]] = D[roads[i][j]][i] = 1;
		for (auto it : g[i])
			D[i][it.se] = D[it.se][i] = 1;
	}
	for (int k = 1;k <= n;++k)
		for (int i = 1;i <= n;++i)
			for (int j = 1;j <= n;++j)
				D[i][j] = min(D[i][j],D[i][k] + D[k][j]);
	for (int i = 1;i <= n;++i)
		for (int j = 1;j < i;++j)
			if (D[i][j] <= R)
				ans[D[i][j]] += 1;
	for (int i = 1;i <= R;++i)
		Answer(i,ans[i]);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 504 KB Output is correct
2 Correct 4 ms 616 KB Output is correct
3 Correct 3 ms 856 KB Output is correct
4 Correct 4 ms 856 KB Output is correct
5 Correct 3 ms 856 KB Output is correct
6 Correct 4 ms 856 KB Output is correct
7 Correct 3 ms 856 KB Output is correct
8 Correct 3 ms 856 KB Output is correct
9 Correct 2 ms 856 KB Output is correct
10 Correct 3 ms 856 KB Output is correct
11 Correct 3 ms 856 KB Output is correct
12 Correct 3 ms 856 KB Output is correct
13 Correct 4 ms 976 KB Output is correct
14 Correct 3 ms 976 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 976 KB Output is correct
2 Correct 3 ms 976 KB Output is correct
3 Correct 3 ms 976 KB Output is correct
4 Correct 3 ms 976 KB Output is correct
5 Correct 2 ms 976 KB Output is correct
6 Correct 2 ms 976 KB Output is correct
7 Correct 2 ms 976 KB Output is correct
8 Correct 3 ms 976 KB Output is correct
9 Correct 3 ms 976 KB Output is correct
10 Correct 4 ms 976 KB Output is correct
11 Correct 3 ms 976 KB Output is correct
12 Correct 3 ms 976 KB Output is correct
13 Correct 4 ms 976 KB Output is correct
14 Correct 4 ms 976 KB Output is correct
15 Correct 3 ms 976 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 17 ms 1608 KB Partially correct
2 Partially correct 15 ms 1732 KB Partially correct
3 Partially correct 23 ms 1732 KB Partially correct
4 Partially correct 26 ms 2048 KB Partially correct
5 Partially correct 5 ms 2048 KB Partially correct
6 Partially correct 7 ms 2048 KB Partially correct
7 Partially correct 16 ms 2048 KB Partially correct
8 Partially correct 17 ms 2048 KB Partially correct
9 Partially correct 14 ms 2048 KB Partially correct
10 Partially correct 15 ms 2048 KB Partially correct
11 Partially correct 20 ms 2148 KB Partially correct
12 Partially correct 14 ms 2148 KB Partially correct
13 Partially correct 17 ms 2172 KB Partially correct
14 Partially correct 14 ms 2172 KB Partially correct
15 Partially correct 15 ms 2172 KB Partially correct
16 Partially correct 8 ms 2172 KB Partially correct
17 Partially correct 40 ms 2548 KB Partially correct
18 Partially correct 27 ms 2796 KB Partially correct
19 Partially correct 26 ms 3044 KB Partially correct