Submission #712675

#TimeUsernameProblemLanguageResultExecution timeMemory
712675vanicDijamant (COI16_dijament)C++14
100 / 100
606 ms7256 KiB
#include <cstdio> #include <iostream> #include <math.h> #include <algorithm> #include <vector> #include <map> #include <bitset> #include <assert.h> #include <string.h> using namespace std; const int maxn=1005; map < string, int > ind; vector < int > ms[maxn]; bool spec[maxn]; int dp[maxn]; void scan(int &a){ a=0; char c=getchar(); while(c>='0' && c<='9'){ a*=10; a+=c-'0'; c=getchar(); } } void scan1(string &s, vector < string > &v){ s.clear(); v.clear(); char c=getchar(); while(c!=' '){ s.push_back(c); c=getchar(); } getchar(); getchar(); c=getchar(); string s1; while(c!=';'){ while(c!=' '){ s1.push_back(c); c=getchar(); } v.push_back(s1); s1.clear(); c=getchar(); } getchar(); } int dfs(int x){ if(dp[x]){ return dp[x]; } int y; for(int i=0; i<ms[x].size(); i++){ y=dfs(ms[x][i]); if(y==maxn){ return maxn; } if(y!=-1){ if(dp[x] && dp[x]!=dp[y]){ return maxn; } dp[x]=y; } } if(!dp[x]){ if(spec[x]){ dp[x]=x; } else{ dp[x]=-1; } } return dp[x]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; string s, s1; vector < string > v; int p; bool sol; int iduc=1; for(int i=0; i<n; i++){ cin >> s; cin >> s1; cin >> s1; v.clear(); while(s1!=";"){ v.push_back(s1); cin >> s1; } sol=1; if(ind.find(s)!=ind.end()){ cout << "greska\n"; continue; } for(int j=0; j<v.size(); j++){ if(ind.find(v[j])==ind.end()){ sol=0; break; } } if(!sol){ cout << "greska\n"; continue; } memset(spec, 0, sizeof(spec)); for(int j=0; j<v.size(); j++){ spec[ind[v[j]]]=1; } memset(dp, 0, sizeof(dp)); for(int j=1; j<iduc; j++){ if(!dp[j]){ p=dfs(j); if(p==maxn){ break; } } } if(p==maxn){ cout << "greska\n"; continue; } cout << "ok\n"; ind[s]=iduc; for(int j=0; j<v.size(); j++){ ms[ind[v[j]]].push_back(iduc); } iduc++; } return 0; }

Compilation message (stderr)

dijament.cpp: In function 'int dfs(int)':
dijament.cpp:59:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |   for(int i=0; i<ms[x].size(); i++){
      |                ~^~~~~~~~~~~~~
dijament.cpp: In function 'int main()':
dijament.cpp:107:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  107 |     for(int j=0; j<v.size(); j++){
      |                  ~^~~~~~~~~
dijament.cpp:118:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  118 |     for(int j=0; j<v.size(); j++){
      |                  ~^~~~~~~~~
dijament.cpp:136:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  136 |     for(int j=0; j<v.size(); j++){
      |                  ~^~~~~~~~~
dijament.cpp:130:5: warning: 'p' may be used uninitialized in this function [-Wmaybe-uninitialized]
  130 |     if(p==maxn){
      |     ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...