이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 50000;
string a[MAX_N], b[MAX_N];
map<string, vector<string> > graph;
map<string, int> vartable;
map<string, bool> viz;
bool ok = true;
void getVal(string str, int xd) {
if(!viz[str]) {
viz[str] = true;
if(vartable.count(str) > 0 && vartable[str] != xd)
ok = false;
vartable[str] = xd;
for(auto it: graph[str])
getVal(it, xd);
}
}
int main() {
int N;
cin >> N;
for(int i = 0; i < N; ++i)
cin >> a[i];
for(int i = 0; i < N; ++i)
cin >> b[i];
for(int i = 0; i < N; ++i) {
if(isalpha(a[i][0]) && isalpha(b[i][0])) {
if(a != b) {
graph[a[i]].push_back(b[i]);
graph[b[i]].push_back(a[i]);
}
} else if(isalpha(a[i][0])) {
int valB = atoi(b[i].c_str());
if(vartable.count(a[i]) > 0 && vartable[a[i]] != valB)
ok = false;
else {
vartable[a[i]] = valB;
}
} else if(isalpha(b[i][0])) {
int valA = atoi(a[i].c_str());
if(vartable.count(b[i]) > 0 && vartable[b[i]] != valA)
ok = false;
else
vartable[b[i]] = valA;
} else if(atoi(a[i].c_str()) != atoi(b[i].c_str()))
ok = false;
}
for(auto it: vartable)
getVal(it.first, it.second);
if(ok)
printf("DA");
else
printf("NE");
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |