๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int bfs(vector<vector<int>> &g, int n, int m, int x, int y, vector<vector<int>> &d) {
queue<pair<int, int>> q;
q.push(make_pair(x, y));
d[x][y] = 0;
int dx[] = {-1, 1, 0, 0}, dy[] = {0, 0, -1, 1};
while (!q.empty()) {
pair<int, int> p = q.front();
q.pop();
int cx = p.first, cy = p.second;
for (int i = 0; i < 4; i++) {
int nx = cx + dx[i], ny = cy + dy[i];
if (nx >= 0 && ny >= 0 && nx < n && ny < m && d[nx][ny] == 1e9) {
d[nx][ny] = d[cx][cy] + 2;
q.push(make_pair(nx, ny));
}
}
}
return 0;
}
int minDays(vector<vector<int>> &g, int n, int m) {
vector<pair<int, int>> s;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (g[i][j] > 0) s.push_back(make_pair(i, j));
if (s.empty()) return 0;
vector<vector<int>> d(n, vector<int>(m, 1e9));
bfs(g, n, m, s[0].first, s[0].second, d);
int t = g[s[0].first][s[0].second];
for (int i = 1; i < s.size(); i++) {
t += d[s[i].first][s[i].second] + g[s[i].first][s[i].second];
fill(d.begin(), d.end(), vector<int>(m, 1e9));
bfs(g, n, m, s[i].first, s[i].second, d);
}
return (t + 7) / 8;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> g(n, vector<int>(m));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> g[i][j];
cout << minDays(g, n, m) << endl;
}
Nucleus โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int kthP(int k) {
vector<bool> p(10000, true);
p[0] = p[1] = false;
vector<int> ps;
for (int i = 2; i < 10000; i++) {
if (p[i]) {
ps.push_back(i);
for (int j = i * 2; j < 10000; j += i)
p[j] = false;
}
}
return ps[k - 1];
}
int bfs(int s, vector<vector<int>> &adj, vector<bool> &vis) {
queue<int> q;
q.push(s);
vis[s] = true;
int c = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
c++;
for (int v : adj[u]) {
if (!vis[v]) {
vis[v] = true;
q.push(v);
}
}
}
return c;
}
int main() {
int a, b;
cin >> a >> b;
vector<vector<int>> adj(a + 1);
for (int i = 0; i < b; i++) {
int c, d;
cin >> c >> d;
adj[c].push_back(d);
adj[d].push_back(c);
}
vector<bool> vis(a + 1, false);
int mx = 0;
for (int i = 1; i <= a; i++) {
if (!vis[i]) {
mx = max(mx, bfs(i, adj, vis));
}
}
cout << mx << " " << kthP(mx) << endl;
return 0;
}
Nucleus โ