class Solution { public: vector<int> findOrder(vector<vector<int> >& prerequisites, int n) { vector<int> ans; set<int> tmp; map<int, int> dic; int i,c = 0; for(i = 0;i<prerequisites.size();i++) { dic[prerequisites[i][0]]++; dic[prerequisites[i][1]]++; } map<int,int>::iterator it; for(it = dic.begin();it!=dic.end();it++) { if(it->second % 2==0) c++; tmp.insert(it->first); } if(c==n) return ans; set<int>::iterator s; for(s = tmp.begin();s!=tmp.end();s++) { ans.push_back(*s); } if(ans.size()==n) return ans; sort(ans.begin(), ans.end()); for(i=ans.size();i<n;i++) { ans.push_back(ans[i-1]+1); } return ans; } };