Submission #244346

# Submission time Handle Problem Language Result Execution time Memory
244346 2020-07-03T16:40:48 Z MatesV13 Dijamant (COI16_dijament) C++11
0 / 100
2000 ms 86392 KB
#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]==cur){xx.pop(); continue;}
		if (v[cur] and v[cur]!=par) return 0;
		v[cur]=par; xx.pop();
		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--){
	ok=1;
	cin >> ime_klase >> nadklase; br++;
	if (imi.find(ime_klase)!=imi.end()) ok=0;
//	cout << "prvi uvijet: " << ok << endl;
	while (true){
		cin >> nadklase;
		if (nadklase==";") break;
		if (imi.find(nadklase)==imi.end()) {
			ok=0; continue;}
		c[br].push_back(imi[nadklase]);
	} imi[ime_klase]=br;
//	cout << "drugi uvijet: " << ok << endl;
	if (ok) ok=check(br);
	if(!ok){
		imi.erase(imi.find(ime_klase));
		c[br].clear();
		br--;
	}
	if (ok) for (int i=1; i<br; i++) if (v[i]) dohvatljivi[i][br]=1;
	if (ok) cout << "ok\n";
	else cout << "greska\n";
}
return 0;
}

Compilation message

dijament.cpp: In function 'bool check(int)':
dijament.cpp:11:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i=0; i<c[idx].size(); i++){
                ~^~~~~~~~~~~~~~
dijament.cpp:13:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j=0; j<c[idx].size(); j++)
                 ~^~~~~~~~~~~~~~
dijament.cpp:24:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i=0; i<c[cur].size(); i++)
                 ~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2099 ms 86392 KB Time limit exceeded
2 Halted 0 ms 0 KB -