Submission #560860

#TimeUsernameProblemLanguageResultExecution timeMemory
560860Yazan_AlattarDijamant (COI16_dijament)C++14
100 / 100
303 ms11216 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define F first #define S second #define pb push_back #define endl "\n" #define all(x) x.begin(), x.end() const int M = 1007; const ll inf = 1e18; const ll mod = 1e9 + 7; const double pi = acos(-1); const double eps = 1e-6; const int dx[] = {0, -1, 0, 1}, dy[] = {1, 0, -1, 0}; const int block = 320; map <string, int> mp; string s[M]; vector <int> roots[M], v[M]; int n, dep[M][M], p[M][M], cmproot; bool cmp(int a, int b){ return dep[a][cmproot] > dep[b][cmproot]; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1; i <= n; ++i){ vector <int> tmp; bool ok = 1; cin >> s[i]; if(mp[s[i]]) ok = 0; else mp[s[i]] = i; int node = mp[s[i]]; while(1){ string x; cin >> x; if(x == ":") continue; if(x == ";") break; if(mp[x] == 0 || mp[x] == node) ok = 0; tmp.pb(mp[x]); } if(!ok){ cout << "greska\n"; if(mp[s[i]] == i) mp[s[i]] = 0; continue; } if(tmp.empty()){ roots[node].pb(node); dep[node][node] = 1; } for(auto j : tmp) for(auto k : roots[j]) v[k].pb(j); for(int root = 1; root <= i; ++root) if(v[root].size()){ cmproot = root; sort(all(v[root]), cmp); int cur = v[root][0]; for(auto j : v[root]){ while(dep[j][root] < dep[cur][root]) cur = p[cur][root]; if(dep[cur][root] == dep[j][root] && cur != j) ok = 0; } } if(ok){ cout << "ok\n"; for(int root = 1; root <= i; ++root) if(v[root].size()){ p[node][root] = v[root][0]; dep[node][root] = dep[v[root][0]][root] + 1; roots[node].pb(root); v[root].clear(); } } else{ cout << "greska\n"; for(int root = 1; root <= i; ++root) v[root].clear(); if(mp[s[i]] == i) mp[s[i]] = 0; } } 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...