Cod sursa(job #782570)

Utilizator oana_popfmi - pop oana oana_pop Data 28 august 2012 12:27:28
Problema Count Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<iostream>
#include<fstream>
#include<queue>
#include<set>
using namespace std;
 
ifstream in("count.in");
ofstream out("count.out");
 
int n,m,sol1,sol2;
set<int> g[30010];
queue<int> q;
 
int main() {
int i,a,b,el;
set<int>::iterator it,j,k;
 
in >> n >> m;
 
for(i=1;i<=m;++i) 
{
            in >> a >> b;
 
            g[a].insert(b);
            g[b].insert(a);
}
 
for(i=1;i<=n;++i)
if(g[i].size()<6)
q.push(i);
while(!q.empty()) 
{
            el = q.front();
            q.pop();
 
            for(it = g[el].begin(); it!=g[el].end(); ++it)
                    for(j = it; j!=g[el].end(); ++j) 
                          if(*j > *it && g[*it].count(*j) > 0) {
 
                            sol1++;
                            for(k=j; k!=g[el].end(); ++k)
                            if(*k>*j && g[*it].count(*k) > 0 && g[*j].count(*k) > 0)
                            sol2++;
            }
 
            for(it = g[el].begin(); it!=g[el].end(); ++it) {
            g[*it].erase(el);
 
            if(g[*it].size() == 5)
            q.push(*it);
            }
}
 
if(sol2)
out << "4 " << sol2 << "\n";
else
if(sol1)
out << "3 " <<  sol1 << "\n";
else
out << "2 " << m << "\n";
 
return 0;
}