#include <iostream>
using namespace std;
const int MAXN = 1000;
int n, a[MAXN][MAXN], counter = 0;
bool visited[MAXN];
void dfs(int v) {
visited[v] = true;
for (int i = 0; i < n; ++i)
if (a[v][i] == 1 && !visited[i])
dfs(i);
}
int main() {
cin >> n;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> a[i][j];
for (int i = 0; i < n; ++i)
visited[i] = false;
for (int i = 0; i < n; ++i)
if (!visited[i]) {
counter++;
dfs(i);
}
cout << "Number of connected components: " << counter << endl;
return 0;
}
|
{$APPTYPE CONSOLE}
uses SysUtils;
const MAXN = 1000;
var
n, counter, i, j: integer;
a: array [0..MAXN - 1, 0..MAXN - 1] of integer;
visited: array [0..MAXN] of boolean;
procedure dfs(v: integer);
var
i: integer;
begin
visited[v] := true;
for i := 0 to n - 1 do
if (a[v][i] = 1) and not visited[i] then
dfs(i);
end;
begin
counter := 0;
read(n);
for i := 0 to n - 1 do
for j := 0 to n - 1 do
read(a[i][j]);
for i := 0 to n - 1 do
visited[i] := false;
for i := 0 to n - 1 do
if not visited[i] then begin
inc(counter);
dfs(i);
end;
writeln('Number of connected components: ', counter);
end.
|