제출 #305097

#제출 시각아이디문제언어결과실행 시간메모리
305097phathnvZamjena (COCI18_zamjena)C++11
70 / 70
205 ms60700 KiB
#include <bits/stdc++.h> #define mp make_pair #define X first #define Y second using namespace std; typedef long long ll; typedef pair <int, int> ii; const int N = 5e5 + 1; int n; string a[2][N]; vector <int> adj[N * 2]; map <string, int> idx; int cur, d[2 * N]; bool noSolution; void readInput(){ cin >> n; for(int i = 1; i <= n; i++) cin >> a[0][i]; for(int i = 1; i <= n; i++) cin >> a[1][i]; } void dfs(int u, int val){ if (d[u] == val) return; if (d[u] != 0 && d[u] != val){ noSolution = 1; return; } d[u] = val; for(int v : adj[u]) dfs(v, val); } void solve(){ for(int i = 0; i < 2; i++) for(int j = 1; j <= n; j++){ if (isdigit(a[i][j][0])) continue; if (idx[a[i][j]] == 0) idx[a[i][j]] = ++cur; } for(int i = 1; i <= n; i++) if (!isdigit(a[0][i][0]) && !isdigit(a[1][i][0])){ int u = idx[a[0][i]], v = idx[a[1][i]]; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 1; i <= n; i++) if (isdigit(a[0][i][0]) && !isdigit(a[1][i][0])) dfs(idx[a[1][i]], atoi(a[0][i].c_str())); else if (!isdigit(a[0][i][0]) && isdigit(a[1][i][0])) dfs(idx[a[0][i]], atoi(a[1][i].c_str())); for(int i = 1; i <= n; i++) if (isdigit(a[0][i][0]) && isdigit(a[1][i][0]) && a[0][i] != a[1][i]) noSolution = 1; cout << (noSolution? "NE" : "DA"); } int main(){ readInput(); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...