您的位置:首页 > 其它

2015 多校第三场

2015-07-29 19:50 344 查看
1002

求max(f(a),f(b)), f为不重复的素因子个数, 在数据要求以内 , 每个数最多有7个,可以打表。

/*Author :usedrose  */
/*Created Time :2015/7/28 11:55:10*/
/*File Name :2.cpp*/
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <vector>
#include <string>
#include <ctime>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define eps 1e-8
#define pi acos(-1.0)
#define MAXN 110
#define OK cout << "ok" << endl;
#define o(a) cout << #a << " = " << a << endl
#define o1(a,b) cout << #a << " = " << a << "  " << #b << " = " << b << endl
using namespace std;
typedef long long LL;

vector<int> G[MAXN];
int n, k;
int du[MAXN];
int num[MAXN];
int vis[MAXN];

int main()
{
while (cin >> n >> k) {
for (int i = 1;i <= n; ++ i)  {
G[i].clear();
num[i] = 1, du[i] =  0, vis[i] = 0;
}
int x, y;
for (int i = 0;i < n-1; ++ i) {
cin >> x >> y;
G[y].push_back(x);
du[x]++;
}
for (int k = 1;k <= n; ++ k) {
for (int i = 1;i <= n; ++ i) {
if (du[i] == 0) {
for (int j = 0;j < G[i].size(); ++ j) {
int v = G[i][j];
du[v]--;
num[v] += num[i];
}
du[i] = -1;
}
}
}
int ans = 0;
for (int i = 1; i <= n; ++ i) {
if (num[i] - 1 == k) ans++;
}
cout << ans << endl;
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: