QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#708952#3556. Making Friends on Joitter is Funphuong22220 2ms9232kbC++201.8kb2024-11-04 10:09:282024-11-04 10:09:28

Judging History

你现在查看的是最新测评结果

  • [2024-11-04 10:09:28]
  • 评测
  • 测评结果:0
  • 用时:2ms
  • 内存:9232kb
  • [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();
}

詳細信息

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%