Pagini recente » Cod sursa (job #1474595) | Cod sursa (job #1162314) | Cod sursa (job #402241) | Cod sursa (job #1510314) | Cod sursa (job #2950805)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <map>
using namespace std;
ifstream fin("showroom.in");
ofstream fout("showroom.out");
int n,f1,r,k,nrd;
vector <string> a[505];
vector <string> dealers[505];
char s[3005];
map <string,bool> M;
bool viz[505];
void read()
{
fin>>n>>f1>>r>>k;
fin.get();
for(int i=1; i<=n; i++)
{
fin.getline(s,3005);
string x="";
for(int j=0; s[j]!=0; j++)
{
if(s[j]==' ' && x!="")
{
a[i].push_back(x);
x="";
}
else if(('a' <= s[j] && s[j] <='z') || ('0' <= s[j] && s[j]<='9'))
{
x+=s[j];
}
}
if(x!="")a[i].push_back(x);
}
}
void checkline(string car,int line,int dl)
{
bool ok=false;
if(!viz[line])
{
for(int i=0; i<a[line].size(); i++)
{
if(a[line][i]==car)
{
ok=true;
}
}
if(ok)
{
viz[line]=true;
for(int i=0; i<a[line].size(); i++)
{
string car=a[line][i];
if(M[car]==false)
{
dealers[dl].push_back(car);
M[car]=true;
for(int k=1;k<=n;k++)
{
checkline(car,k,dl);
}
}
}
}
}
}
void add_dealer(int line)
{
if(!viz[line])
{
nrd++;
}
viz[line]=true;
for(int i=0; i<a[line].size(); i++)
{
string car=a[line][i];
if(M[car]==false)
{
dealers[nrd].push_back(car);
M[car]=true;
}
}
for(int i=0; i<dealers[nrd].size(); i++)
{
string car=dealers[nrd][i];
for(int newline=line+1; newline<=n; newline++)
{
checkline(car,newline,nrd);
}
}
}
void build()
{
for(int i=1; i<=n; i++)
{
add_dealer(i);
}
/**
for(int i=1; i<=nrd; i++)
{
for(int j=0; j<dealers[i].size(); j++)
{
cout<<dealers[i][j]<<" ";
}
cout<<"\n";
}
*/
fout<<nrd<<"\n"<<0<<"\n";
}
int main()
{
read();
build();
return 0;
}