#include <cstdio>
#include <stdio.h>
#include <stdbool.h>
#include <iostream>
#include <map>
#include <vector>
#include <climits>
#include <stack>
#include <string>
#include <queue>
#include <algorithm>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <cmath>
#include <cctype>
#include <bitset>
#include <iomanip>
#include <cstring>
#include <numeric>
#include <cassert>
using namespace std;
#define int long long
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
map<string, int> m;
vector<int> vect;
vector<bitset<1005> > par(n+1);
for (int i=1; i<=n; ++i){
string s, a;
cin>>s>>a;
vector<int> temp;
bool can=!m[s];
for (cin>>a; a!=";"; cin>>a){
if (!m[a])can=0;
else temp.pb(m[a]);
}
if (!can){
cout<<"greska\n";
continue;
}
par[i][i]=1;
for (auto c:temp)par[i]|=par[c];
for (auto a:vect)if (par[i][a]){
for (auto b:vect)if (par[i][b]&&!par[a][b]&&!par[b][a]&&(par[a]&par[b]).any()){
can=0;
break;
}
if (!can)break;
}
if (can)m[s]=i, vect.pb(i), cout<<"ok\n";
else cout<<"greska\n";
}
}
# | 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... |