朝回なので不参加。
http://community.topcoder.com/stat?c=problem_statement&pm=13881
問題
整数N,Mが与えられる。
頂点数N、葉がMの木を作れ。
解法
0~(M-2)と(N-1)のM個を葉となるようにする。
0~(M-2)をすべて(M-1)との間に辺を張る。
後は(M-1)、M、(M+1)、…、(N-1)を順次つなげば葉がM個になる。
class ExactTreeEasy { public: vector <int> getTree(int n, int m) { vector<int> R; int i; for(i=0;i<m-1;i++) R.push_back(i),R.push_back(m-1); for(i=m-1;i<n-1;i++) R.push_back(i),R.push_back(i+1); return R; } }
まとめ
Div2 Easyより早く解けた。