Rezultati

Up. imeNalogaJezikRezultatČas oddaje
vlakectomaz-2017 Prijateljske besede C++ 100/100OK 20. apr '17 @ 19:06

Test Točke Porabljen spomin Porabljen čas Status
#1 12/12 2,773 MiB 0,004 s OK
#2 12/12 2,777 MiB 0,004 s OK
#3 12/12 2,961 MiB 0,223 s OK
#4 12/12 2,969 MiB 0,223 s OK
#5 13/13 2,957 MiB 0,211 s OK
#6 13/13 2,961 MiB 0,211 s OK
#7 13/13 2,809 MiB 0,174 s OK
#8 13/13 2,875 MiB 0,199 s OK

Ocenjevani program (besede.cc):
#include <stdio.h>
#include <vector>
#include <queue>

struct pov{
	std::vector <int> v;
};

int main(){
	int N,i,j,Nobiskan=1;
	char buffer[100];
	fgets(buffer,99,stdin);
	sscanf(buffer,"%d",&N);
	//printf("PREBRANO: %d\n",N);
	struct pov povezave[N];
	char obiskan[N]; for(i=0;i<N;i++)obiskan[i]=0;
	char besede[N][11];

	for(i=0;i<N;i++){
		fgets(buffer,99,stdin);
		sscanf(buffer,"%s ",besede[i]);
	}

	for(i=0;i<N;i++){
		for(j=i+1;j<N;j++){
			//velikost i,j besede
			int jsize=0,isize=0;
			while(besede[i][isize]!=0)isize++;
			while(besede[j][jsize]!=0)jsize++;

			//Prvih 3??
			if( besede[i][0] == besede[j][0] &&
					besede[i][1] == besede[j][1] &&
					besede[i][2] == besede[j][2]){
				povezave[i].v.push_back(j);
				povezave[j].v.push_back(i);
			}
			//Le 3 crke
			if( jsize==3 and isize==3 ) continue;
			//Zadnjih 3
			if( besede[i][isize-1] == besede[j][jsize-1] &&
					besede[i][isize-2] == besede[j][jsize-2] &&
					besede[i][isize-3] == besede[j][jsize-3]){
				povezave[i].v.push_back(j);
				povezave[j].v.push_back(i);
			}
		}
	}

	std::queue <int> Q;
	Q.push(0);
	obiskan[0]=1;
	
	while(!Q.empty()){
		int kam, kdo=Q.front();
		Q.pop();
		int Nkdo=povezave[kdo].v.size();
		for(i=0;i<Nkdo;i++){
			kam=povezave[kdo].v[i];
			if(obiskan[kam])continue;
			Q.push(kam);
			obiskan[kam]=1;
			Nobiskan++;
		}
	}

	printf("%d\n",Nobiskan);

	return 0;
}