社区讨论
40pts qiu da lao bang tiao
P7113[NOIP2020] 排水系统参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mi4a5kqb
- 此快照首次捕获于
- 2025/11/18 15:56 3 个月前
- 此快照最后确认于
- 2025/11/18 21:01 3 个月前
wo da bu liao zhong weng,suo yi da jia lian xi yi xia ping ying ba
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int l[1000005],a[1000005][6];
__int128 p[1000005],q[1000005];
queue<int>st;
vector<int>E[1000005];
bool f[1000005];
void add(__int128 &a,__int128 &b,__int128 x,__int128 y,int d){
if(x == 0 || y == 0)return;
y *= d;
if(a == 0){
b = y;
a = x;
return;
}
// if(y == 0){
// cout << a << " " << b << " " << x << "\n";
// return;
// }
__int128 g1 = __gcd(b , y);
__int128 lcm = b * y / g1;
__int128 bg = lcm / b,gy = lcm / y;
b *= bg;
a *= bg;
x *= gy;
a += x;
// if(a == 0 || b == 0){
// cout << d << " " << x << " " << y << "\n";
// return;
// }
// if(a == 0 && b != 0 || a != 0 && b == 0){
// cout <<4234242 ;
// exit(0);
// }
// if(a == 0 || b == 0)return;
__int128 g = __gcd(a , b);
a /= g;
b /= g;
return;
}
int mmmm = 0;
void bfs(){
while(!st.empty()){
int u = st.front();
st.pop();
if(0 == q[u] && p[u] == 0)continue;
for(int i = 0 ; i < (int)E[u].size() ; i ++){
int v = E[u][i];
add(p[v] , q[v] , p[u] , q[u] , E[u].size());
// cout << u << ' ' << v << '\n';
// cout << v << " " << p[v] << " " << q[v] << " " << p[u] << " " << q[u] << " " << E[u].size() << "\n";
if(f[v])continue;
st.push(v);
}
// if(E[u].size() == 0){
// mmmm = u;
// return;
// }
p[u] = q[u] = 0;
}
return;
}
void dfs(__int128 x){
if(x > 9){
dfs(x / 10);
}
long long l = x % 10;
cout << l;
return;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n >> m;
for(int i = 1 ; i <= n ; i ++){
cin >> l[i];
if(l[i] == 0)f[i] = 1;
for(int j = 1 ; j <= l[i] ; j ++){
cin >> a[i][j];
E[i].push_back(a[i][j]);
}
}
for(int i = 1 ; i <= m ; i ++){
p[i] = 1,q[i] = m;
st.push(i);
}
for(int i = m + 1 ; i <= n ; i ++){
p[i] = 0,q[i] = 1;
}
bfs();
for(int i = 1 ; i <= n ; i ++){
if(!f[i])continue;
dfs(p[i]);
cout << " ";
dfs(q[i]);
cout << "\n";
}
// cout << mmmm;
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...