結果
| 問題 | No.826 連絡網 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-04-23 15:25:34 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 1,313 ms / 2,000 ms |
| コード長 | 823 bytes |
| 記録 | |
| コンパイル時間 | 938 ms |
| コンパイル使用メモリ | 100,888 KB |
| 実行使用メモリ | 174,392 KB |
| 最終ジャッジ日時 | 2026-06-07 11:18:16 |
| 合計ジャッジ時間 | 11,916 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 30 |
ソースコード
#include <iostream>
#include <queue>
#include <vector>
#include <cassert>
int main()
{
int N, P;
std::cin >> N >> P;
assert(1 <= N and N <= 1000000);
assert(1 <= P and P <= N);
std::vector<std::vector<int>> G(N + 1);
for (int i = 2; i <= N; i++) {
for (int j = 2; i * j <= N; j++) {
G[i].push_back(i * j);
G[i * j].push_back(i);
}
}
std::vector<bool> visited(N + 1, false);
std::queue<int> Q;
Q.push(P);
visited[P] = true;
int ans = 1;
while (not Q.empty()) {
const int s = Q.front();
Q.pop();
for (const int to : G[s]) {
if (visited[to]) { continue; }
visited[to] = true;
Q.push(to);
ans++;
}
}
std::cout << ans << std::endl;
return 0;
}