标签:16px items shc word rpo toolbar 标签 新浪微博 arc
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 struct node{ 6 int next,to; 7 }e[200010]; 8 bool neko[100010]; 9 int n,m,d,x,u,v,path[100010],h[100010],ans=0,tot=0; 10 int pathp[100010],pathn[100010]; 11 void add(int u,int v){ 12 e[++tot].to=u;e[tot].next=h[v];h[v]=tot; 13 e[++tot].to=v;e[tot].next=h[u];h[u]=tot; 14 } 15 void dfspath(int x,int last){ 16 path[x]=-2333333;pathp[x]=-2333333; 17 for(int i=h[x];~i;i=e[i].next){ 18 if(e[i].to!=last){ 19 dfspath(e[i].to,x); 20 if(path[x]<path[e[i].to]+1){ 21 pathp[x]=path[x]; 22 path[x]=path[e[i].to]+1; 23 pathn[x]=e[i].to; 24 }else if(pathp[x]<path[e[i].to]+1)pathp[x]=path[e[i].to]+1; 25 } 26 } 27 if(neko[x]&&path[x]<-2000000)path[x]=0; 28 if(neko[x]&&pathp[x]<-2000000)pathp[x]=0; 29 } 30 void dpdfs(int x,int last){ 31 if(~last) 32 if(pathn[last]==x){ 33 if(pathp[last]+1>path[x]){ 34 pathp[x]=path[x]; 35 path[x]=pathp[last]+1; 36 pathn[x]=0; 37 }else if(pathp[last]+1>pathp[x])pathp[x]=pathp[last]+1; 38 }else{ 39 if(path[last]+1>path[x]){ 40 pathp[x]=path[x]; 41 path[x]=path[last]+1; 42 pathn[x]=0; 43 }else if(path[last]+1>pathp[x]) 44 pathp[x]=path[last]+1; 45 } 46 if(path[x]<=d)ans++; 47 for(int i=h[x];~i;i=e[i].next) 48 if(e[i].to!=last)dpdfs(e[i].to,x); 49 } 50 int main(){ 51 // freopen("cf337d.in","r",stdin); 52 memset(h,-1,sizeof(h)); 53 scanf("%d%d%d",&n,&m,&d); 54 for(int i=1;i<=m;i++) 55 scanf("%d",&x),neko[x]=1; 56 for(int i=1;i<n;i++){ 57 scanf("%d%d",&u,&v); 58 add(u,v); 59 } 60 dfspath(1,1); 61 dpdfs(1,-1); 62 printf("%d",ans); 63 }
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
16 | 17 | 18 | 19 | 20 | 21 | 22 | |||
23 | 24 | 25 | 26 | 27 | 28 | 29 | |||
30 | 31 | 1 | 2 | 3 | 4 | 5 |
标签:16px items shc word rpo toolbar 标签 新浪微博 arc
原文地址:http://www.cnblogs.com/skylynf/p/7142686.html