/ tabris /

记录详情

Runtime Error

/in/foo.cc: In function 'void dfs(int, int)':
/in/foo.cc:40:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<G[rt].size();i++)
                 ~^~~~~~~~~~~~~
# 状态 耗时 内存占用
#1 Accepted 123ms 20.133 MiB
#2 Runtime Error 54ms 16.98 MiB
#3 Accepted 3ms 3.82 MiB
#4 Accepted 4ms 4.074 MiB
#5 Accepted 3ms 2.695 MiB
#6 Accepted 3ms 3.074 MiB
#7 Accepted 120ms 27.242 MiB
#8 Accepted 23ms 7.852 MiB
#9 Accepted 128ms 25.34 MiB
#10 Accepted 168ms 31.52 MiB

代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<map>
#include<vector>
#include<set>
#include<queue>
#include<time.h>
#include<math.h>
using namespace std;

#define ok cout<<"OK"<<endl;
#define dbg(x) cout<<#x<<" = "<<x<<endl;
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl;
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl;
#define print(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define pb push_back
#define Fi first
#define Se second
#define ll long long
#define ull unsigned long long
#define pii pair<int,int>
#define pil pair<int,ll>
#define pll pair<ll,ll>

const double eps = 1e-8;
const double PI = acos(-1.0);
const int Mod = 1000000007;
const int INF = 0x3f3f3f3f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e5+10;
vector<pii> G[maxn];
ll dp[maxn][32];
ll sum[maxn];
ll ans[maxn];
void dfs(int rt,int fa)
{
    sum[rt]=1;
    for(int i=0;i<G[rt].size();i++)
    {
        int to=G[rt][i].Fi;
        int val=G[rt][i].Se;
        if(to==fa) continue;
        dfs(to,rt);
        sum[rt]+=sum[to];
        for(int j=0;j<30;j++)
        {
            if(val&(1LL<<j))
            {
                dp[rt][j]=dp[rt][j]+sum[to]-dp[to][j];
            }
            else
            {
                dp[rt][j]=dp[rt][j]+dp[to][j];
            }
        }
    }
}
int main()
{
    //freopen(".in","r",stdin);
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        G[u].push_back(pii(v,w));
        G[v].push_back(pii(u,w));
    }
    for(int i=1;i<=n;i++) sum[i]=0;
    dfs(1,-1);
    for(int i=1;i<=n;i++)
    {
        ans[i]=0;
        for(int j=0;j<30;j++)
        {
            ans[i]=(ans[i]+1LL*dp[i][j]*(sum[i]-dp[i][j])%Mod*(1LL<<j)%Mod)%Mod;
        }
        printf("%lld ",ans[i]);
    }
    return 0;
}

信息

递交者
类型
递交
语言
C++
递交时间
2019-06-10 12:46:00
评测时间
2019-06-10 12:46:00
评测机
分数
90
总耗时
634ms
峰值内存
31.52 MiB