vector<vector> Երկչափ և բազմաչափ դինամիկ զանգվածներ

C++-ը շատ ճկուն է իր տիպերի մեջ և եթե հնարավորություն կա հայտարարելու vector< pair <int, int> >, ապա կա նաև հնարավորություն հայտարարելու զանգվածների զանգված, կամ այլ կերպ ասված երկչափ զանգված, կամ C++-ի լեզվով ասված՝
vector <int> one_dim;
vector< vector <int> > two_dim;
vector< vector< vector <int> > > three_dim;
...
Բայց այստեղ պետք է ուշադիր լինել սկզբնական արժեքներ տալուց։ vector< vector <int> > two_dim նշանակում է որ մենք հայտարարում ենք զանգվածների զանգված։ Այսինքն զանգվածի ամեն էլեմենտ իրենից ներկայացնում է մի զանգված։ Այս դեպքում պետք է two_dim զանգվածին տալ համապատասխան սկզբնական արժեքներ՝
vector< vector <int> > two_dim;

// ավելացնել դատարկ զանգված
for (int i=0; i < 10; ++i)
	two_dim.push_back({});

// Լրիվ նույն գործողությունը կարելի է անել նաև այսպես
// ավելացնել դատարկ զանգված
for (int i=0; i < 10; ++i)
	two_dim.push_back(vector <int>());
vector< vector <int> > two_dim(10, vector <int>());
vector< vector <int> > ones(10, vector <int>(10, 1));
Տարբերակներից վերջինը բավական հարմար է, քանի որ այն հնարավորություն է տալիս հայտարարել զանգված և բոլոր սկզբնական արժեքները դարձնել 1։
 
Վարժություն՝
Տրված են n մարդ համարակալված 1-ից n, և m հատ թվազույգ , որոնք նկարագրում են թե ովքեր են իրար ծանոթ։ Օրինակ (3, 5) նշանակում է 3 համարի մարդը և 5 համարի մարդը իրար ճանաչում են։
 
Մուտքի առաջին տողում տրված են n ու m - ը ().
Անհրաժեշտ է ամեն մարդու համար տպել իր ծանոթ մարդկանց ցուցակը դասակարգված աճման կարգով
Մուտք
Ելք
5 3 1 2 2 3 4 5
1: 2 2: 1 3 3: 2 4: 5 5: 4
 

Constraints

Time limit: 0.4 seconds

Memory limit: 512 MB

Output limit: 5 MB

To check your solution you need to sign in
Sign in to continue