比赛 |
20160229 |
评测结果 |
AWWWWWWEEWTEE |
题目名称 |
政党 |
最终得分 |
7 |
用户昵称 |
KZNS |
运行时间 |
4.008 s |
代码语言 |
C++ |
内存使用 |
3.46 MiB |
提交时间 |
2016-02-29 20:40:52 |
显示代码纯文本
//KZNS
#include <fstream>
#include <iostream>
#include <vector>
#include <map>
using namespace std;
//
ifstream fin ("cowpol.in");
ofstream fout ("cowpol.out");
//
typedef map<int, int> mapii;
//
int n, k;
vector<int> mp[200002];
int a[200002]={0};
int dt[100002]={0};
//
mapii DFS(int root) {
mapii p,pp;
mapii::iterator ii;
for (int i=0 ;i<mp[root].size(); i++) {
pp=DFS(mp[root][i]);
dt[a[mp[root][i]]]=max(dt[a[mp[root][i]]], p[a[mp[root][i]]]+1);
p[a[mp[root][i]]]=max(p[a[mp[root][i]]], 1);
for (ii=pp.begin(); ii!=pp.end(); ii++) {
dt[(*ii).first]=max(dt[(*ii).first], p[(*ii).first]+(*ii).second+1);
p[(*ii).first]=max(p[(*ii).first], (*ii).second+1);
}
}
return p;
}
//
int main() {
fin >>n >>k;
int b;
for (int i=1; i<=n; i++) {
fin >>a[i] >>b;
mp[b].push_back(i);
}
mapii pp;
pp=DFS(mp[0][0]);
for (mapii::iterator ii=pp.begin(); ii!=pp.end(); ii++) {
fout <<(*ii).second <<endl;
}
return 0;
}
//UBWH