#include <initializer_list>
#include <iostream>
#include <vector>

template <class T>
class Graph {
    private:
        std::vector < std::vector<T> > data;
        struct EdgeConstructor
        {
        	T source;
        	std::vector<T> destination;
        };
    public:
        class Edge {
            private:
                T source;
                T destination;
        };
        Graph(std::initializer_list<EdgeConstructor>) {}
};

enum Country {Poland, Ukraine, Germany, USA};
typedef Graph<Country> GC;

int main() {
	GC gc{
	    { Poland, {Ukraine, Germany} },
	    { Germany, {Poland, Ukraine, USA} },
	    { USA, {Poland, Ukraine, USA} }
	};
	return 0;
}