# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
244354 | MatesV13 | Dijamant (COI16_dijament) | C++11 | 2085 ms | 7052 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
map<string, int> imi;
vector<int> c[1005];
string ime_klase, nadklase;
int v[1005], us[1005]; bool ok;
bool dohvatljivi[1005][1005];
int n, br; queue<pair<int, int> > xx;
bool check(int idx){
while (xx.size()) xx.pop();
for (int i=0; i<c[idx].size(); i++){
bool kk=1;
for (int j=0; j<c[idx].size(); j++)
if (dohvatljivi[c[idx][i]][c[idx][j]]) kk=0;
if (kk) xx.push(make_pair(c[idx][i], c[idx][i]));
}
for (int i=1; i<br; i++) v[i]=0;
while (!xx.empty()){
int cur = (xx.front()).first;
int par = (xx.front()).second;
if (v[cur] and v[cur]!=par) return 0;
xx.pop(); if (v[cur]) continue; v[cur]=par;
for (int i=0; i<c[cur].size(); i++)
xx.push(make_pair(c[cur][i], par));
} return 1;
}
int main (){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n; br=0;
while (n--){
cin >> ime_klase >> nadklase; br++; ok=1;
if (imi.count(ime_klase)) ok=0;
while (true){
cin >> nadklase;
if (nadklase==";") break;
if (imi.count(nadklase))
c[br].push_back(imi[nadklase]);
else {ok=0; continue;}
}
if (ok) ok=check(br);
if (ok) {
for (int i=1; i<br; i++)
if (v[i]) dohvatljivi[i][br]=1;
imi[ime_klase]=br;
cout << "ok\n";
}
else {c[br].clear(); br--; cout << "greska\n";}
}
return 0;
}
Compilation message (stderr)
# | 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... |