国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ2599: [IOI2011]Race 點分治

2019-11-08 03:03:56
字體:
來源:轉載
供稿:網友

題目鏈接:http://www.lydsy.com/JudgeOnline/PRoblem.php?id=2599

題解:點分治的時候記錄兩個值,一個是距離,一個是邊數,因為最小值是無法刪除的,所以可以開一個數組記錄每一個答案出現了多少次,最后從小到大掃數組就OK

#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=200005;const int M=400005;const int inf=1e9;struct pp{int dis,dep;} s[N];int len,n,K,G,h,sum,cnt,dep[N],dis[N],siz[N],maxn,ans[N];int to[M],nxt[M],lj[N],w[M];bool vis[N];void ins(int f,int t,int p) {cnt++,to[cnt]=t,nxt[cnt]=lj[f],lj[f]=cnt,w[cnt]=p;}void add(int f,int t,int p) {ins(f,t,p),ins(t,f,p);}bool cmp(pp u,pp v) {return u.dis<v.dis;}void dfs(int x,int fa){	s[++h]=(pp){dis[x],dep[x]};	for(int i=lj[x];i;i=nxt[i])	if(!vis[to[i]]&&to[i]!=fa)	{		dis[to[i]]=dis[x]+w[i];		dep[to[i]]=dep[x]+1;		dfs(to[i],x);	}}void findG(int x,int fa){	int mx=0;	siz[x]=1;	for(int i=lj[x];i;i=nxt[i])	if(!vis[to[i]]&&to[i]!=fa)	{		findG(to[i],x);		siz[x]+=siz[to[i]];		mx=max(mx,siz[to[i]]);	}	mx=max(mx,sum-siz[x]);	if(mx<maxn) maxn=mx,G=x;}void cal(int x,int now,int ff){	dis[x]=now;	h=0;	dfs(x,0);	sort(s+1,s+h+1,cmp);	int j=h;	for(int i=1;i<=h;i++)      {    	while(s[i].dis+s[j].dis>K) j--;        for(int l=j;K&&s[i].dis+s[l].dis==K;l--)        ans[s[i].dep+s[l].dep]+=ff;    }}void solve(int x){	dep[x]=0;	cal(x,0,1);	vis[x]=true;	for(int i=lj[x];i;i=nxt[i])	if(!vis[to[i]])	{		cal(to[i],w[i],-1);		maxn=inf;		sum=siz[to[i]];		findG(to[i],0);		solve(G);	}}int main(){	scanf("%d%d",&n,&K);	int u,v,w;	for(int i=1;i<n;i++)	{		scanf("%d%d%d",&u,&v,&w);		u++,v++;		add(u,v,w);	}	G=0;	sum=n,maxn=inf;	findG(1,0);	solve(G);	for(int i=1;i<=n;i++)	if(ans[i])	{		printf("%d/n",i);		return 0;	}	puts("-1");}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨竹工卡县| 阳春市| 新竹市| 栾川县| 普宁市| 南乐县| 吐鲁番市| 府谷县| 马鞍山市| 乐都县| 白山市| 日照市| 武隆县| 洪湖市| 卢龙县| 云龙县| 焦作市| 蓝田县| 贵溪市| 土默特左旗| 延津县| 祁阳县| 中西区| 潢川县| 洛隆县| 松潘县| 策勒县| 克什克腾旗| 禹州市| 海安县| 鄢陵县| 新沂市| 天峻县| 云龙县| 武功县| 凌源市| 白河县| 广州市| 鹤庆县| 广州市| 庐江县|