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