QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#658483#4540. Counting Stickmenqq0121AC ✓432ms58904kbC++201.7kb2024-10-19 16:53:302024-10-19 16:53:30

Judging History

This is the latest submission verdict.

  • [2024-10-19 16:53:30]
  • Judged
  • Verdict: AC
  • Time: 432ms
  • Memory: 58904kb
  • [2024-10-19 16:53:30]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long 
// #define PII pair<int,int>
const int N=5e5+9;
const int mod=998244353;
int n,m,k;
int a,b;
vector<int>e[N*2];
void solve()
{
    cin>>n;
    for(int i=0;i<=n;i++)
    {
        e[i].clear();
    }
    vector<int>d(n+2),q(n+2);
    for(int i=1;i<=n-1;i++)
    {
        // e[i].clear();
        int W,w;
        cin>>W>>w;
        e[W].push_back(w);
        e[w].push_back(W);
        q[W]++;
        q[w]++;        
    }
    for(int i=1;i<=n;i++)
    {
        d[i]=q[i]-1;
    }
    int ans=0;
    auto dfs=[&](int x)->int
    {

        int res=0; 
        if(q[x]>=4)
        {
            int a=0;
            int cnt=0;    
            for(auto k:e[x])
            {
                int jj=k;
                // if(jj==x)
                // {
                //     continue;
                // }
                a=(a+cnt*d[jj])%mod;
                cnt=(cnt+d[jj])%mod;//手
            }
            for(auto k:e[x])
            {
                int jj=k;
                      
                int sum=((a-((cnt-d[jj])%mod+mod)%mod*d[jj]%mod)%mod+mod)%mod;
                int xx=d[jj]*(d[jj]-1)/2%mod; 
                res=(res+(q[x]-3)*xx%mod*sum%mod)%mod;     
            }
        }
        return res;
    };
    for(int i=1;i<=n;i++)
    {  
        ans=(ans+dfs(i))%mod;
        // cout<<i<<" "<<ans<<"\n";
    }
    // for(auto k:e[1])
    // {
    //     cout<<k<<" ";
    // }
    cout<<ans<<"\n"; 
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int T=1;
    cin>>T;
    while(T--)
    {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 432ms
memory: 58904kb

input:

15
9
1 2
2 3
3 4
2 5
5 6
2 7
7 8
7 9
9999
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1...

output:

1
311255965
672169659
323323769
834196165
147532751
608867683
433545054
268282647
580524749
250163191
0
876200211
781358751
903681473

result:

ok 15 lines