Cod sursa(job #1760875)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 21 septembrie 2016 13:59:04
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include <cstdio>
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
vector <int>lv[100000];
vector <int>::iterator ii;
queue <int> corn;

int n,m;
int used[100000];
/*int nodnou()
{


for(int i=1;i<=n;i++)

{
    if (used[i]==false) return i;
}
return false;




}*/





 int nodnou (int i, int j)
 { int nr=1162167621;
   int m = (i+j)/2;
   if (nr==used[m])
     return m;
   else
     if (i<j)
       if  (nr<used[m])
         nodnou(i, m-1);
       else nodnou(m+1, j);
     else return false;
 }





int main()
{
    FILE *f=fopen("dfs.in","r");

    int x,y;
    fscanf(f,"%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        lv[x].push_back(y);
        lv[y].push_back(x);


    }
    int ok=0;

    memset(used,69,sizeof(used));


        while(1)
         {
             x=nodnou(1,n);
             if(x==false)break;

             ok++;
             corn.push(x);
             used[x]=true;


   while(!corn.empty())
   {
       x=corn.front();
       corn.pop();
       for(ii=lv[x].begin();ii<lv[x].end();++ii)
       if(used[*ii]==false)
       {
           used[*ii]=true;
           corn.push(*ii);
       }




   }



         }
 FILE *g=fopen("dfs.out","w");
fprintf(g,"%d",ok);



    return 0;
}