Cod sursa(job #2170474)

Utilizator victorobamavictor olaru victorobama Data 15 martie 2018 01:53:49
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
/// DE CONTINUAT

#include <fstream>
#include <string.h>
#include<vector>
using namespace std;

ifstream f("ninjago.in");
ofstream g("ninjago.out");

int n,m,i,x,y,q,pos,j,ok ;
char c[5];
 int conexe;
int viz[31205];
vector <int> v[31205];

vector <pair <int,int > > vv[31205];




void dfs(int nod)
{

    int nodul;
    viz[nod]=1;
    pos++;
    vector <int> :: iterator it;
    for(it=v[nod].begin();it!=v[nod].end();++it)
    {
        nodul=*it;
        if(viz[nodul]==0)
        dfs(nodul);
    }

}


void solve1()
{

    f>>n>>m;
    for(i=1;i<=m;i++)
   {ok=1;
    f>>x>>y;
    f.get();
    f.getline(c,5);

    for(j=0;j<4;j++)
        if(c[j]=='E')ok=0;
    if(ok)
    {
    v[x].push_back(y);
    v[y].push_back(x);
    }
   }
     dfs(1);vector <int> v[31205];

   g<<pos<<'\n';
}
void solve2()
{

     f>>n>>m;
    for(i=1;i<=m;i++)
   {ok=0;
    f>>x>>y;
    f.get();
    f.getline(c,5);

    for(j=0;j<4;j++)
        if(c[j]=='E')ok++;
    if(!ok)
    v[x].push_back(y);
    v[y].push_back(x);

    vv[x].push_back(make_pair(y,ok));
    vv[y].push_back(make_pair(x,ok));

   }
   for(i=1;i<=n;i++)
    if(!viz[i])
   {
       dfs(i);
       conexe++;
   }

   conexe=conexe-1;
   g<<conexe<<'\n';

}




int main()
{
    f>>q;
    if(q==1)solve1();
   if(q==2)solve2();
    //if(q==3)solve3();

    f.close();g.close();return 0;
    return 0;
}