vector սկզբնական արժեքներով
Երբ հայտարարում ենք vector զանգված, հնարավոր է սկզբնական արժեքներ տալ դրա էլեմենտներին։ Այսինքն կարելի է հենց սկզբից ունենալ
n
չափ ունեցող զանգված, որում բոլոր էլեմենտները լինեն օրինակ -1
կամ օրինակ 6.7
։ Դա կարող ենք անել vector
-ի չափը նշելուց հետո սկզբնական արժեք փոխանցելով՝vector <double> d(5, 6.7); // [6.7, 6.7, 6.7, 6.7, 6.7]
vector <long long> ll(3, -100); // [-100, -100, -100]
vector <char> c(4, 'p'); // ['p', 'p', 'p', 'p']
vector <string> s(2, "hello"); // ["hello", "hello"]
Սա կարող է հարմար լինել հատկապես երբ սկզբնական արժեքները պետք է ինչ-որ ֆիքսված թիվ լինեն (օրինակ՝
-1
կամ 0
)։ vector
-ը եթե չի ստանում ոչ-մի սկզբնական արժեք զանգվածի չափի հետ միասին, ապա այդ բոլոր արժեքներին վերագրում է 0
։ Այսինքն տարբերություն չկա գրել vector <int> a(100, 0);
թե vector <int> a(100);
Վարժություն՝
1
-ից n
թվերը շարված են իրար կողք։ Այդ շարքի վրա տեղի են ունենում q
հատ փոփոխություն։ Ամեն փոփոխություն իրենից ներկայացնում է մի գործողություն, որը տանում է սլաք a
թվից դեպի b
թիվ, այդպիսով դարձնելով b
-ն a
-ի «ծնողը»: Այսինքն օրինակ եթե 5
ից կա սլաք դեքպի 2
, ապա 2
-ը 5
-ի «ծնողն» է։Սկզբում ոչ մի թիվ ծնող չունի։ Երաշխավորվում է, որ թվերի զույգերը չունեն կրկնություններ և նույն թիվը չի կարող ունենալ մեկից ավելի «ծնող»։ Այսինքն՝ որպես ժառանգ, թիվը կարող է հայտնվել միայն մի անգամ։
Մուտքի առաջին տողում տրված է
n
ամբողջ թիվը (1 ≤ n ≤ )։Մուտքի երկրորդ տողում տրված է
m
ամբողջ թիվը (1 ≤ m ≤ n), որին հաջորդում են m
տողեր։ Ամեն տողում գրված է երկու թիվ a
և b
, որը b
-ն դարձնում է a
-ի «ծնող»։Ելքում անհրաժեշտ է տպել
n
տող, որից յուրաքանչյուրում գրված լինի այդ թվի «տոհմածառը»։Մուտք | Ելք |
5
3
2 1
3 2
5 2 | 1 2 5
2 5
3
4
5 |
Բացատրություն՝

Constraints
Time limit: 0.4 seconds
Memory limit: 512 MB
Output limit: 5 MB