#29980: 解題報告


dfd8282@gmail.com (fishhh)


我的做法是紀錄每個點的父節點,只要把input的邏輯反過來就好,這樣就可以得到父節點

詳細實做的話會推薦有vector,這樣方便很多

struct node{
	vector<int> from;
	unsigned long long value;
};
node city[100000]

然後透過遞迴來進行運算,就很像是高一學的計算所有到達終點方法數那樣加就好
至於要如何遞迴,我是覺得很像是DP中的一個經典例子-費氏數列。

int re(int want){ if(want==1){ return 1; } for(int i=0;i<city[want].from.size();i++){ if(city[city[want].from[i]].value==0){ city[want].value+=re(city[want].from[i]); } else{ city[want].value+=city[city[want].from[i]].value; } city[want].value %= 1234567 ; } return city[want].value ; }