Submission #71015

#TimeUsernameProblemLanguageResultExecution timeMemory
71015KLPPToy Train (IOI17_train)C++14
22 / 100
1270 ms8852 KiB
#include "train.h"
#include<vector>
#include<iostream>
#include<queue>
using namespace std;
vector<int>nei[10000];
vector<int>inverse[10000];
int owner[10000];
int n,m;
     
std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	
    	n=a.size();m=u.size();
    	for(int i=0;i<m;i++){
    		nei[u[i]].push_back(v[i]);
    		inverse[v[i]].push_back(u[i]);
    	}
	/*for(int i=0;i<n;i++){cout<<"Nei "<<i<<" : ";
		for(int j=0;j<nei[i].size();j++)cout<<nei[i][j]<<" ";
		cout<<endl;
	}cout<<endl;*/
	if(a[0]==1){
    	queue<int> marcados;
    	bool b[n];
    	for(int i=0;i<n;i++)b[i]=false;
    	for(int start=0;start<n;start++){
    		if(r[start]>0){
    			queue<int> Q;
    			Q.push(start);
    			bool visited[n];
    			for(int i=0;i<n;i++)visited[i]=false;
    			while(!Q.empty()){
    				int u=Q.front();Q.pop();
    				for(int i=0;i<nei[u].size();i++){
    					int v=nei[u][i];
    					if(!visited[v]){
    						visited[v]=true;
    						Q.push(v);
    					}
    				}
    			}
    			b[start]=visited[start];
			//for(int i=0;i<inverse[start].size();i++)cout<<visited[inverse[start][i]];
			//for(int i=0;i<n;i++)cout<<visited[i];
			//cout<<endl;
    			if(visited[start]){
    				marcados.push(start);
				
    			}
    		}
    	}
    	while(!marcados.empty()){
    		int u=marcados.front();marcados.pop();
    		for(int i=0;i<inverse[u].size();i++){
    			int v=inverse[u][i];
    			if(!b[v]){
    				b[v]=true;
    				marcados.push(v);
    			}
    		}	
    	}
    	vector<int> ans;
    	for(int i=0;i<n;i++){
    		ans.push_back(b[i]);
    		//cout<<b[i]<<endl;
    	}
    	return ans;
	}
	queue<int> marcados;
    	bool b[n];
    	for(int i=0;i<n;i++)b[i]=false;
    	for(int start=0;start<n;start++){
    		if(r[start]==0){
    			queue<int> Q;
    			Q.push(start);
    			bool visited[n];
    			for(int i=0;i<n;i++)visited[i]=false;
    			while(!Q.empty()){
    				int u=Q.front();Q.pop();
    				for(int i=0;i<nei[u].size();i++){
    					int v=nei[u][i];
    					if(!visited[v] && r[v]==0){
    						visited[v]=true;
    						Q.push(v);
    					}
    				}
    			}
    			b[start]=visited[start];
			//for(int i=0;i<inverse[start].size();i++)cout<<visited[inverse[start][i]];
			//for(int i=0;i<n;i++)cout<<visited[i];
			//cout<<endl;
    			if(visited[start]){
    				marcados.push(start);
				
    			}
    		}
    	}
    	while(!marcados.empty()){
    		int u=marcados.front();marcados.pop();
    		for(int i=0;i<inverse[u].size();i++){
    			int v=inverse[u][i];
    			if(!b[v]){
    				b[v]=true;
    				marcados.push(v);
    			}
    		}	
    	}
    	vector<int> ans;
    	for(int i=0;i<n;i++){
    		ans.push_back(!b[i]);
    		//cout<<b[i]<<endl;
    	}
    	return ans;
}

Compilation message (stderr)

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:34:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<nei[u].size();i++){
                     ~^~~~~~~~~~~~~~
train.cpp:54:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i=0;i<inverse[u].size();i++){
                   ~^~~~~~~~~~~~~~~~~~
train.cpp:80:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<nei[u].size();i++){
                     ~^~~~~~~~~~~~~~
train.cpp:100:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i=0;i<inverse[u].size();i++){
                   ~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...