Cod sursa(job #2049676)

Utilizator AlexAxeToporan Victor AlexAxe Data 27 octombrie 2017 15:29:01
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("fof.in");
ofstream out("fof.out");

const int NMax = 1e3 + 2;
int N, M;
vector <pair <int, int> > Contor;
vector <int> G[NMax];
queue <int> Q;

void Citire (){
    in >> N >> M;
    int x, y;
    for (int i = 1; i <= M; i++){
        in >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

bool SortareS (pair <int, int> x, pair <int, int> y){
    return x.second > y.second;
}

bool SortareF (pair <int, int> x, pair <int, int> y){
    return x.first > y.first;
}

void CreareVector (int j){
    bool Ok = false;
    for (int k = 0; k < (int)Contor.size(); k++)
        if (Contor[k].second == j){
            Contor[k].first ++;
            Ok = true;
        }
    if (!Ok){
        pair <int, int> Aux = make_pair(1, j);
        Contor.push_back (Aux);
    }
}

void Solve (int Nod){
    for (int i : G[Nod])
        for (int j : G[i])
            if (j != Nod)
                CreareVector (j);
    sort (Contor.begin(), Contor.end(), SortareF);
    sort (Contor.begin(), Contor.end(), SortareS);
    while (!Contor.empty()){
        out << Contor.back().second << " ";
        Contor.pop_back();
    }
    out << '\n';
}

int main (){
    Citire();
    for (int i = 1; i <= N; i++)
        Solve(i);
    return 0;
}