Pagini recente » Cod sursa (job #1734181) | Cod sursa (job #1735495) | Cod sursa (job #195114) | Cod sursa (job #682348) | Cod sursa (job #752274)
Cod sursa(job #752274)
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<vector>
#include<algorithm>
#include<bitset>
using namespace std;
const int knmax = 4100;
bitset<knmax> aux, graph[knmax];
int verts, edges, ver1, ver2;
char t[11];
inline void pars(){
ver1 = ver2 = 0;
int i = 0;
while(t[i] >= '0' && t[i] <= '9'){
ver1 = ver1 * 10 + t[i] - '0';
++i;
}
++i;
while(t[i] >= '0' && t[i] <= '9'){
ver2 = ver2 * 10 + t[i] - '0';
++i;
}
}
void read(){
assert(freopen("triplete.in", "r", stdin));
scanf("%d%d\n", &verts, &edges);
for(int i = 1; i <= edges; ++i){
gets(t);
pars();
graph[ver1][ver2] = graph[ver2][ver1] = 1;
}
}
long long ans;
void solve(){
for(int i = 1; i <= verts; ++i)
for(int j = i + 1; j <= verts; ++j)
if(graph[i][j]){
aux = graph[i] & graph[j];
ans = ans + aux.count();
}
}
void write(){
assert(freopen("triplete.out", "w", stdout));
printf("%lld", ans / 3);
}
int main(){
read();
solve();
write();
return 0;
}