Cod sursa(job #1733056)

Utilizator danutbodbodnariuc danut danutbod Data 23 iulie 2016 15:35:52
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.99 kb
//var II 100p liste de  adiacenta dinamica
#include <fstream>
#include <vector>
#define N 100003
using namespace std;
ifstream fi("dfs.in");
ofstream fo("dfs.out");
vector <int> A[N];
int n,m,x,y,viz[N],i,j;
int DF(int x){
int i;
viz[x]=1;
for(i=0;i<A[x].size();i++)
    if(viz[A[x][i]]==0)DF(A[x][i]);
}
int main()
{
    fi>>n>>m;
    for(i=1;i<=m;i++)
    {
      fi >> x >> y;
      A[x].push_back(y);A[y].push_back(x);
    }
    int k=0;
    for(i=1;i<=n;i++)
     if(viz[i]==0){
                   DF(i);
                   k++;
     }
    fo<<k<<'\n';
    //    for(i=1;i<=n;i++)//afis liste de adiacenta
//    {   fo<<i<<"->";
//        for(j=0;j<A[i].size();j++) fo<<A[i][j]<<" ";
//        fo<<endl;
//    }
    return 0;
}
////50p matrice de adiacenta (bitset)degeaba +un test timp depasit
//#include <fstream>
//#include <bitset>
//using namespace std;
//ifstream fi("dfs.in");
//ofstream fo("dfs.out");
//bitset <10000> a[10000];
//int n,m,x,y,viz[4000],i;
//int DF(int x){
//int i;
//viz[x]=1;
//for(i=1;i<=n;i++)
//    if(a[x][i]==1 and viz[i]==0)DF(i);
//}
//int main()
//{
//    fi>>n>>m;
//    for(i=1;i<=m;i++)
//    {
//      fi >> x >> y;
//      a[x][y]=1; a[y][x]=1;
//    }
//    int k=0;
//    for(i=1;i<=n;i++)
//     if(viz[i]==0){
//                   DF(i);
//                   k++;
//     }
//    fo<<k<<'\n';
//    return 0;
//}
////50p cu matrice de adiacenta (prea mica)
//#include <fstream>
//using namespace std;
//ifstream fi("dfs.in");
//ofstream fo("dfs.out");
//bool a[4000][4000];
//int n,m,x,y,viz[4000],i;
//int DF(int x){
//int i;
//viz[x]=1;
//for(i=1;i<=n;i++)
//    if(a[x][i]==1 and viz[i]==0)DF(i);
//}
//int main()
//{
//    fi>>n>>m;
//    for(i=1;i<=m;i++)
//    {
//      fi >> x >> y;
//      a[x][y]=1; a[y][x]=1;
//    }
//    int k=0;
//    for(i=1;i<=n;i++)
//     if(viz[i]==0){
//                   DF(i);
//                   k++;
//     }
//    fo<<k<<'\n';
//    return 0;
//}