Pagini recente » Borderou de evaluare (job #176091) | Borderou de evaluare (job #1589904) | Borderou de evaluare (job #1292746) | Borderou de evaluare (job #1125655) | Cod sursa (job #1429687)
#include <iostream>
#include <stack>
#include <fstream>
#include <time.h>
using namespace std;
int **a,n,m,*v;
void dfs (int x) {
stack<int> s;
s.push(x);
v[x] = 1;
int ok;
while (!s.empty()) {
ok = 1;
int e = s.top();
int i;
for (i=1;i<=n;i++) {
if (a[e][i] && !v[i]) {
v[i] = 1;
s.push(i);
ok = 0;
break;
}
}
if (ok) s.pop();
}
}
int checkv() {
int i;
for (i=1;i<=n;i++) if (!v[i]) return 0;
return 1;
}
int main()
{
ifstream f("dfs.in");
f>>n>>m;
v = new int[n+1];
int i,j,x,y,c = 0;
a = new int*[n+1];
for (i=1;i<=n;i++) a[i] = new int[n+1];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) a[i][j] = 0;
for (i=1;i<=n;i++) v[i] = 0;
while (f>>x>>y) {
a[x][y] = 1;
a[y][x] = 1;
}
f.close();
for (i=1;i<=n;i++) if (!v[i]) {
dfs(i);
c++;
}
//cout<<c<<" "<<(float)clock()/CLOCKS_PER_SEC;
ofstream g("dfs.out");
g<<c;
g.close();
return 0;
}