Pagini recente » Cod sursa (job #1450696) | Cod sursa (job #269303) | Cod sursa (job #523889) | Cod sursa (job #2498510) | Cod sursa (job #523690)
Cod sursa(job #523690)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 5000;
int n, m, NR, v[N], o[N], w[N];
vector <int> a[N];
void DFS(int k) {
int i, nr, nrq, r, j ;
v[k] = 1;
nr = 0;
for(i = 0; i < a[k].size(); ++i)
if(v[a[k][i]])
o[++nr] = a[k][i];
// printf("%d %d\n", k, nr);
for(i = 0; i < a[k].size(); ++i)
if(!v[a[k][i]]) {
nrq = nr;
for(j = 1; j <= nr; ++j)
w[j] = o[j];
for(j = 0; j < a[a[k][i]].size(); ++j)
if(v[a[a[k][i]][j]] && a[a[k][i]][j] != k)
w[++nrq] = a[a[k][i]][j];
sort(w + 1, w + nrq + 1);
r = 0;
for(j = 1; j < nrq; ++j)
if(w[j] == w[j + 1])
++r;
// printf("%d %d ",k, a[k][i]);
// for(j = 1; j <= nrq; ++j)
// printf("%d ", w[j]);
// printf("\n");
NR += r;
DFS(a[k][i]);
}
}
int main() {
freopen("triplete.in", "r", stdin);
freopen("triplete.out", "w", stdout);
int i, x, y;
scanf("%d %d", &n, &m);
for(i = 1; i <= m; ++i)
scanf("%d %d", &x, &y), a[x].push_back(y), a[y].push_back(x);
for(i = 1; i <= n; ++i)
if(v[i] == 0)
DFS(i);
printf("%d \n", NR);
return 0;
}