Pagini recente » Cod sursa (job #1144619) | Cod sursa (job #1552080) | Cod sursa (job #2887560) | Cod sursa (job #1026415) | Cod sursa (job #2235761)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 4100
#define MMAX 66000
ifstream fin("triplete.in");
ofstream fout("triplete.out");
vector <int> la[4100];
queue <int> q,qc;
int n,m,sol=0;
//BFS cu un control inteligent
void BFS(int i){
if(q.empty())return;
/* q2=q;
while(!q2.empty()){
cout<<q2.front()<<' ';
q2.pop();
}
cout<<'\n';*/
if(qc.front()<=2){
int l=la[q.front()].size();
for(int j=0;j<l;j++){
if((la[q.front()][j]>q.front() && qc.front()<2) || (la[q.front()][j]==i && qc.front()==2)){
qc.push(qc.front()+1);
q.push(la[q.front()][j]);
}
}
if(q.empty())return;
else{
q.pop();
qc.pop();
}
BFS(i);
if(q.empty())return;
}else{
while(!q.empty()){
if(q.front()==i)sol++;
q.pop();
qc.pop();
}
return;
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
la[a].push_back(b);
la[b].push_back(a);
}
for(int i=1;i<=n;i++)
{ //cout<<i<<" :\n";
int l=la[i].size();
for(int j=0;j<l;j++){
if(la[i][j]>i){
q.push(la[i][j]);
qc.push(1);
}
}
if(!q.empty())BFS(i);
}
cout<<sol;
return 0;
}