Pagini recente » Cod sursa (job #2779639) | Cod sursa (job #2451503) | Cod sursa (job #2867725) | Cod sursa (job #2625672) | Cod sursa (job #737567)
Cod sursa(job #737567)
using namespace std;
#include<fstream>
#include<bitset>
#include<algorithm>
#include<vector>
#define NMAX 4100
#define go(x,y,v) (v.push_back(make_pair((x),(y))))
#define maxim(a,b) ((a>b)?(a):(b))
//bitset<NMAX> a[NMAX];
//bool a[NMAX][NMAX];
vector< pair <short int, short int > > M;
vector< short int > G[NMAX];
int n,S=0,m;
void citire()
{
freopen("triplete.in","r",stdin);
short int x,y,i;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%hd %hd",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
//a[x][y]=1;
//a[y][x]=1;
go(x,y,M);
}
}
bool search(int val, int i)
{
int left,right,mid;
left=0;
right=G[i].size();
while(left<=right)
{
mid=(left+right)/2;
if(G[i][mid]==val)
return 1;
if(G[i][mid]<val)
left=mid+1;
else
right=mid-1;
}
return 0;
}
void solve()
{
unsigned i,j,mid;
for(i=0;i<m;i++)
for(j=0;j<G[M[i].first].size();j++)
if(G[M[i].first][j]>maxim(M[i].first,M[i].second))
if(search(G[M[i].first][j],M[i].second))
{
printf("%hd %hd %hd\n",M[i].first,M[i].second,G[M[i].first][j]);
S++;
}
}
void afisare()
{
freopen("triplete.out","w",stdout);
printf("%d\n",S);
}
int main()
{
citire();
solve();
afisare();
return 0;
}