标签:tar 最大 col 输出 string content 而且 之间 次数
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 const int N=1e5+10,M=1e6+10; 7 int n,m,num,tot,K,Ans,cnt[2],sum[N],head[2][N],f[N],a[N],Num[N],bel[N],ans[N],fa[N],dfn[N],low[N],p[N]; 8 bool b[N],vis[N]; 9 struct edge { int x,y; }e[2][M]; 10 void insert(int p,int x,int y) { e[p][++cnt[p]].x=y,e[p][cnt[p]].y=head[p][x],head[p][x]=cnt[p]; } 11 int getfather(int x) { return fa[x]==x?x:fa[x]=getfather(fa[x]); } 12 void Tarjan(int x) 13 { 14 dfn[x]=low[x]=++dfn[0],p[++tot]=x,vis[x]=1; 15 for (int i=head[0][x];i;i=e[0][i].y) 16 if (!bel[e[0][i].x]) 17 { 18 if (vis[e[0][i].x]) low[x]=min(low[x],dfn[e[0][i].x]); 19 else Tarjan(e[0][i].x),low[x]=min(low[x],low[e[0][i].x]); 20 } 21 if (dfn[x]==low[x]) 22 { 23 num++; int v; 24 do 25 { 26 v=p[tot--],bel[v]=num,sum[num]+=a[v],vis[v]=0; 27 }while(v!=x); 28 } 29 } 30 void work(int x) 31 { 32 b[x]=1,f[x]+=sum[x]; 33 for (int i=head[1][x];i;i=e[1][i].y) 34 { 35 getfather(x),getfather(e[1][i].x); 36 fa[fa[x]]=fa[e[1][i].x],Num[e[1][i].x]--,f[e[1][i].x]=max(f[x],f[e[1][i].x]); 37 if (!Num[e[1][i].x]) work(e[1][i].x); 38 } 39 } 40 int main() 41 { 42 freopen("azeroth.in","r",stdin),freopen("azeroth.out","w",stdout),scanf("%d%d",&n,&m); 43 for (int i=1,x,y;i<=m;i++) { scanf("%d%d",&x,&y); if (x==y) continue; insert(0,x,y); } 44 for (int i=1;i<=n;i++) scanf("%d",&a[i]); 45 scanf("%d",&K); 46 for (int i=1;i<=n;i++) if (!bel[i]) Tarjan(i); 47 for (int i=1;i<=n;i++) 48 for (int j=head[0][i];j;j=e[0][j].y) 49 if (bel[i]!=bel[e[0][j].x]) 50 insert(1,bel[i],bel[e[0][j].x]),Num[bel[e[0][j].x]]++; 51 for (int i=1;i<=num;i++) fa[i]=i; 52 for (int i=1;i<=num;i++) if (!Num[i]&!b[i]) work(i); 53 for (int i=1;i<=num;i++) getfather(i),ans[fa[i]]=max(ans[fa[i]],f[i]); 54 sort(ans+1,ans+num+1); 55 for (int i=num;i>=max(1,num-K);i--) Ans+=ans[i]; 56 printf("%d",Ans); 57 }
[Tarjan][并查集][dp] Jzoj P4253 QYQ在艾泽拉斯
标签:tar 最大 col 输出 string content 而且 之间 次数
原文地址:https://www.cnblogs.com/Comfortable/p/10339464.html