社区讨论
为什么快读反而超时,用scanf却过了?为什么???
P2052[NOI2011] 道路修建参与者 5已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @loa0w7dl
- 此快照首次捕获于
- 2023/10/28 20:33 2 年前
- 此快照最后确认于
- 2023/11/02 11:00 2 年前
CPP
#include<bits/stdc++.h>
#define ll long long
#define N 1000050
#define il inline
#define vd void
#define tp template<typename T>
ll n,cnt,ans,size[N],head[N];
struct node{int w,to,nt;}e[N<<1];
tp il vd read(T &x){
T w=1;char ch=getchar();x=0;
while(!isdigit(ch)&&ch!='-')ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(isdigit(ch))x+=(x<<3)+(x<<1)+(ch^'0'),ch=getchar();
x*=w;
}
il vd add(int x,int y,int z){
e[++cnt].to=y;
e[cnt].nt=head[x];
e[cnt].w=z;
head[x]=cnt;
}
il vd dfs(int x,int fa){
size[x]=1;
for(int i=head[x];i;i=e[i].nt){
int to=e[i].to;
if(fa==to) continue;
dfs(to,x);
size[x]+=size[to];
ans+=e[i].w*abs(2*size[to]-n);
}
}
int main(){
read(n);
int x,y,z;
for(int i=1;i<n;i++){
read(x);read(y);read(z);
add(x,y,z);add(y,x,z);
}
dfs(1,0);
printf("%lld\n",ans);
return 0;
}
为什么这会T,而用scanf不会T???
回复
共 7 条回复,欢迎继续交流。
正在加载回复...