社区讨论
65ptsWA求条
P11448「ALFR Round 3」D 核裂变参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mid7nszt
- 此快照首次捕获于
- 2025/11/24 21:57 3 个月前
- 此快照最后确认于
- 2025/11/24 23:04 3 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int v[500009];
vector<int> ve[5000009];
int tim[5000009];
int iss[5000009];
vector<int> g[5000009];
const int INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 998244353;
inline int read() {
int ans = 0;
char ch;
while ((ch = getchar()) != EOF && !isdigit(ch)) {
}
if (ch == EOF) return 0;
ans = ch - '0';
while ((ch = getchar()) != EOF && isdigit(ch)) {
ans = ans * 10 + (ch - '0');
}
return ans;
}
inline void write(long long x) {
if (x == 0) {
putchar('0');
return;
}
char buffer[400];
int pos = 0;
while (x > 0) {
buffer[pos++] = x % 10 + '0';
x = x / 10;
}
for (int i = pos - 1; i >= 0; i--) {
putchar(buffer[i]);
}
return ;
}
signed main(){
int n = read(),k = read(),m = read();
for(int i = 1;i <= n;i++){
tim[i] = INF;
}
deque<int> de;
for(int i = 1;i <= m;i++){
v[i] = read();
tim[v[i]] = 0;
de.push_back(v[i]);
iss[v[i]] = 1;
}
for(int i = 1;i <= n;i++){
int a = read();
for(int j = 1;j <= a;j++){
int e = read();
ve[i].push_back(e);
g[e].push_back(i);
}
}
while(!de.empty()){
int cl = de.front();
de.pop_front();
for(int cll:ve[cl]){
if(tim[cll] == INF){
tim[cll] = tim[cl] + 1;
de.push_back(cll);
}
}
}
for(int i = 1;i <= n;i++){
if(tim[i] >= k){
putchar('0');
putchar(' ');
continue;
}
int ans = 0;
if(iss[i]){
ans += k % mod;
ans %= mod;
}
ans += ve[i].size() * (k - tim[i]) % mod;
ans %= mod;
for(int cl:g[i]){
if(tim[cl] < k){
ans += k - tim[cl] - 1;
ans %= mod;
}
}
ans %= mod;
write(ans);
putchar(' ');
}
cout << endl;
return 0;
}
最后三个点很靠后错了
提交记录
回复
共 1 条回复,欢迎继续交流。
正在加载回复...