이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
using I=int;
using Lli=long long int;
const I N=100000;
set<I>incs[N],outs[N];
Lli res=0;
void add(I a,I b){
if(a==b)return;
if(outs[a].count(b))return;
outs[a].insert(b);
incs[b].insert(a);
res++;
vector<I>adds;
do{
adds.clear();
for(auto c:outs[b]){
if(!outs[c].count(b))continue;
if(a==c)continue;
if(outs[a].count(c))continue;
adds.push_back(c);
}
for(auto c:adds)add(a,c);
}while(adds.size());
if(outs[b].count(a)){
for(auto c:incs[a])add(c,b);
for(auto c:incs[b])add(c,a);
}
}
I main(){
cin.tie(0)->sync_with_stdio(0);
I n,m;cin>>n>>m;
for(I i=0;i<m;i++){
I a,b;cin>>a>>b,a--,b--;
add(a,b);
printf("%lli\n",res);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |