# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
102120 | 2019-03-22T15:19:17 Z | jwvg0425 | 스파이 (JOI13_spy) | C++17 | 267 ms | 36144 KB |
#include <stdio.h> #include <vector> #include <queue> #include <algorithm> #include <iostream> #include <string> #include <bitset> #include <map> #include <set> #include <tuple> #include <string.h> #include <math.h> #include <random> #include <functional> #include <assert.h> #include <math.h> #include <iterator> #include <chrono> #define all(x) (x).begin(), (x).end() #define xx first #define yy second using namespace std; using i64 = long long int; using ii = pair<int, int>; using ii64 = pair<i64, i64>; using vi = vector<long long int>; int iparent[2005]; int jparent[2005]; vector<int> ichild[2005]; vector<int> jchild[2005]; int counts[2005][2005]; int table[2005][2005]; int solve(int i, int j) { if (i == 0 || j == 0) return 0; if (table[i][j] != -1) return table[i][j]; int& ans = table[i][j]; ans = counts[i][j] + solve(iparent[i], j) + solve(i, jparent[j]) + solve(iparent[i], jparent[j]); return ans; } int main() { memset(table, -1, sizeof(table)); int n, m; scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) { int p, q; scanf("%d %d", &p, &q); jparent[i] = p; jchild[p].push_back(i); iparent[i] = q; ichild[q].push_back(i); } for (int i = 1; i <= m; i++) { int r, s; scanf("%d %d", &r, &s); counts[s][r]++; } for (int i = 1; i <= n; i++) printf("%d\n", solve(i, i)); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 18 ms | 16640 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 117 ms | 22776 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 267 ms | 36144 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |