Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Kwiatki.cpp : Defines the entry point for the console application.
- //
- #pragma warning(disable:4996)
- #include <cstdio>
- #include <math.h>
- struct WEZEL
- {
- int parent = 0;
- int sciezkaLewa = 0;
- int sciezkaPrawa = 0;
- int iloscKwiatkow = 0;
- int* tab;
- }wezel;
- void wyznaczLiscie(WEZEL* tab, int* liscie, int rozmiarTablicy)
- {
- liscie[0] = 0;
- for (int i = 1; i < rozmiarTablicy; i++)
- {
- if (tab[i].sciezkaLewa == 0 && tab[i].sciezkaPrawa == 0)
- {
- liscie[i] = 1;
- }
- else
- {
- liscie[i] = 0;
- }
- }
- }
- void obliczKwiatki(WEZEL* mapa,int wezel)
- {
- if (mapa[wezel].sciezkaLewa == 0 && mapa[wezel].sciezkaPrawa == 0)
- {
- mapa[wezel].tab = new int[1];
- mapa[wezel].tab[0] = 0;
- obliczKwiatki(mapa, mapa[wezel].parent);
- }
- else
- {
- }
- }
- int main()
- {
- int liczbaSciezek;
- int liczbaRuchow;
- int koniec1;
- int koniec2;
- int liczbaKwiatkowNaSciezce;
- scanf("%d", &liczbaSciezek);
- scanf("%d", &liczbaRuchow);
- WEZEL* mapa = new WEZEL[liczbaSciezek+2];
- int wykladnik = liczbaSciezek / 2;
- int *liscie = new int[pow(2,wykladnik) ];
- // budowa mapy
- for (int i = 0; i < liczbaSciezek; i++)
- {
- scanf("%d",&koniec1);
- scanf("%d", &koniec2);
- scanf("%d", &liczbaKwiatkowNaSciezce);
- if (mapa[koniec1].sciezkaPrawa == 0)
- {
- mapa[koniec1].sciezkaPrawa = koniec2;
- mapa[koniec2].parent = koniec1;
- }
- else
- {
- if (mapa[koniec1].sciezkaPrawa < koniec2)
- {
- mapa[koniec1].sciezkaLewa = mapa[koniec1].sciezkaPrawa;
- mapa[koniec1].sciezkaPrawa = koniec2;
- }
- else
- {
- mapa[koniec1].sciezkaLewa = koniec2;
- }
- mapa[koniec2].parent = koniec1;
- }
- mapa[koniec2].iloscKwiatkow = liczbaKwiatkowNaSciezce;
- }
- wyznaczLiscie(mapa, liscie, liczbaSciezek + 2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement