Pagini recente » Cod sursa (job #2359864) | Cod sursa (job #2504983) | Profilul lui Adrian Craciun (deneo) | Cod sursa (job #2525636) | Cod sursa (job #2462391)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream fin ("dfs.in");
ofstream fout ("dfs.out");
int n, m, x, y, cc[100001], numCC, i;
bool exp[100001];
vector <int> adj[100001];
stack <int> s;
void UCC(int n)
{
int i=0, x=0;
numCC=0;
for (i=1;i<=n;i++) {
if (!exp[i]) {
numCC=numCC+1;
s.push(i);
while (!s.empty()) {
x=s.top();
s.pop();
cc[x]=numCC;
if (!exp[x]) {
exp[x]=1;
for (int j=0;j<adj[x].size();j++) {
s.push(adj[x][j]);
}
}
}
}
}
}
void addEdge (vector <int> adj[], int u, int v)
{
adj[u].push_back(v);
adj[v].push_back(u);
}
int main () {
fin>>n>>m;
for (i=0;i<m;i++) {
fin>>x>>y;
addEdge(adj, x, y);
}
UCC(n);
fout<<numCC;
return 0;
}