Graf nieskierowany

0

Witam
Mam za zadanie napisac program, ktory dla podanych ilosci wierzcholkow, krawedzi i sasiadujacych wierzcholkow wypisze stopien kazdego wierzcholka oraz stopien grafu. W jaki sposob mozna wypisac stopnie dla kazdego wierzcholka oraz stopien grafu w zalaczonym programie? Bylbym wdzieczny za udzielenie mi pomocy.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int V, E;     
    cout << "Podaj liczbe wierzcholkow: ";
    cin >> V;
    cout << "Podaj liczbe krawedzi: ";
    cin >> E;

    vector<int> *ZA = new vector<int>[V+1];

    for(int i=1; i<=E; i++) 
    {
        int a, b;
        cout << "Podaj wierzcholki sasiadujace dla krawedzi " << i << ": ";
        cin >> a >> b;
        ZA[a].push_back(b);
        ZA[b].push_back(a);
    }
}
0

vector<int> ZA(V+1);

0

@_13th_Dragon nie rozumiem co masz na mysli ponownie deklarujac vector

0
Xanis napisał(a):

@_13th_Dragon nie rozumiem co masz na mysli ponownie deklarujac vector

To, że new nie jest Ci potrzebne.

0

Stopnie dla wierzchołków i dla całego grafu możesz wypisać poprzez odpowiednio size() poszczególnych wektorów i std::max() z tych size().

0

Wg mnie to potrzebujesz raczej czegoś w ten deseń:

vector<list<size_t> > Graph(V);
cin>>a>>b;
--a;
--b;
ZA[a].push_back(b);
ZA[b].push_back(a);
0

Mój programik widzę. :p
Napisz sam, a nie kopiujesz, ale w sumie dla mnie to nie ma większej różnicy, bo i tak jest to kilka linijek kodu, które umieściłem, aby ludzie zobaczyli jak się implementuje graf, ale jednak nie po to aby kopiowali (i to jeszcze tak na pałę).
Mimo to jak kopiujesz (ale lepiej jak spojrzysz na jakiś kod, a później napiszesz sam), to z głową, a Ty zostawiłeś tablicę dynamiczną i usunąłeś delete. Dałem w tym programie tablicę dynamiczną, aby nie było ograniczenia na wielkość grafu, jeżeli masz jakieś maksymalne n, to możesz zrobić to na statycznej, jak zatrzymujesz dynamiczną, to zwalniaj pamięć.
Programik jest naprawdę trywialny, a Ty musiałeś to kopiować, to nie świadczy dobrze o Tobie (chyba, że to nie jest na uczelnię/do szkoły, to jak dla własnej nauki, to ok, chociaż w takim wypadku w szczególności powinno się samemu przeżyć napisanie grafu).
A stopień wierzchołka jest równie trywialny, bo po prostu sprawdzasz długość każdego vectora (jest funkcja w STL-u od tego) no stopień grafu to max z tego.
Polecam jeszcze raz napisanie tego programiku samemu.

Edit: Kilka osób już odpowiedziało jak widzę, więc rozwiązanie i tak już masz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1