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