kmjp's blog

競技プログラミング参加記です

TopCoder SRM 662 Div2 Medium ExactTreeEasy

朝回なので不参加。
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より早く解けた。