QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#708952 | #3556. Making Friends on Joitter is Fun | phuong2222 | 0 | 2ms | 9232kb | C++20 | 1.8kb | 2024-11-04 10:09:28 | 2024-11-04 10:09:28 |
answer
#include<bits/stdc++.h>
using namespace std;
using lli = long long;
const int maxN = 1e5 + 5;
vector<int> adj[maxN];
lli lab[maxN],n,m,res = 0;
set<int> s[maxN];
int findset(int u)
{
return lab[u] < 0 ? u : lab[u] = findset(lab[u]);
}
void unite(int u,int v,int x,int y)
{
if (lab[u] > lab[v]) swap(u,v);
res = res - (-lab[u]) * ((-lab[u]) - 1) - (-lab[v]) * ((-lab[v]) - 1) - lli(s[v].size()) * (-lab[v]) - lli(s[u].size()) * (-lab[u]);
s[u].erase(x);
s[u].erase(y);
s[v].erase(x);
s[v].erase(y);
if (s[u].size() < s[v].size()) swap(s[u],s[v]);
s[u].insert(s[v].begin(),s[v].end());
lab[u] += lab[v];
lab[v] = u;
res = res + (-lab[u]) * ((-lab[u]) - 1) + lli(s[u].size()) * (-lab[u]);
}
map<pair<int,int>,int> ch;
void input()
{
cin >> n >> m;
res = 0;
fill(lab + 1,lab + n + 1,-1);
for (int i = 1;i <= m;++i)
{
int u,v;
cin >> u >> v;
int tmp = max(ch[{u,v}],ch[{v,u}]);
//cerr << tmp << "\n";
if (tmp == 1)
{
//cout << i << " " << res << "A\n";
int x = findset(u),y = findset(v);
if (x != y) unite(x,y,u,v);
ch[{u,v}]++;
ch[{v,u}]++;
//cout << s[x].size() << " " << res << "B\n";
}
else if (tmp == 0)
{
int r = findset(v);
res = res - lli(s[r].size()) * (-lab[r]);
s[r].insert(u);
res += lli(s[r].size()) * (-lab[r]);
ch[{u,v}]++;
ch[{v,u}]++;
}
cout << res << "\n";
}
}
void solve()
{
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// freopen("B.inp","r",stdin);
// freopen("B.out","w",stdout);
input();
solve();
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 9232kb
input:
5 20 4 2 1 5 2 3 2 5 3 2 3 1 4 5 1 2 5 2 1 4 4 1 3 4 5 1 2 4 2 1 4 3 1 3 5 4 3 5 5 3
output:
1 2 3 4 6 7 8 10 13 14 16 16 30 30 30 30 30 30 30 30
result:
wrong answer 8th lines differ - expected: '12', found: '10'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #1:
0%