Cod sursa(job #2950805)

Utilizator suimerchantsui merchant suimerchant Data 4 decembrie 2022 18:22:55
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.42 kb
#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;
}