MLE+TLE求助(大雾
查看原帖
MLE+TLE求助(大雾
100743
Noir_楼主2021/8/19 15:20
#include<bits/stdc++.h>
#define N 100005
#define inf 0x3f3f3f3f
#define max(a,b) (((a)>(b))?(a):(b))
#define min(a,b) (((a)>(b))?(b):(a))
using namespace std;
int n,m,ans=-inf;
int a[N];
int cnt=1,head[N],head2[N];
int ru[N],dp[N];
struct node{int to,nxt;}e[N<<1],e2[N<<1];
int dfn[N],low[N],tot,sum;
stack<int>s;
bool vis[N];
int col[N],val[N];
inline void add(register int u,register int v){
	e[++cnt].to=v;
	e[cnt].nxt=head[u];
	head[u]=cnt;
}
inline void add2(register int u,register int v){
	e2[++cnt].to=v;
	e2[cnt].nxt=head2[u];
	head2[u]=cnt;
}
inline int read(){
	register int f=1,k=0;
	register char c=getchar();
	while(c!='-'&&(c<'0'||c>'9')) c=getchar();
	if(c=='-') f=-1,c=getchar();
	while(c>='0'&&c<='9') k=(k<<3)+(k<<1)+(c^48),c=getchar();
	return f*k;
}
inline void write(register int x){
    if(x<0) x=-x, putchar('-');
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
inline void tarjan(int u){
	s.push(u);
	vis[u]=1;
	dfn[u]=low[u]=++tot;
	for(int i=head[u];i;i=e[i].nxt){
		int v=e[i].to;
		if(!dfn[v]){
			tarjan(v);
			low[u]=min(low[u],low[v]);
		}
		else if(vis[v]) low[u]=min(low[u],dfn[v]);
	}
	if(dfn[u]==low[u]){
		++sum;
		int i=s.top();s.pop();
		col[i]=sum;
		vis[i]=0;
		val[sum]+=a[i];
		while(i!=u){
			i=s.top();s.pop();
			col[i]=sum;
			vis[i]=0;
			val[sum]+=a[i];
		}
	}
}
inline int dfs(int u,int fa){
	for(int i=head2[u];i;i=e2[i].nxt){
		int v=e2[i].to;
		if(v^fa){
			dfs(v,u);
			dp[u]=max(dp[u],dp[v]+val[v]);
		}
	}
}
main(void){
	n=read();m=read();
	for(int i=1;i<=n;i++) a[i]=read();
	for(int u,v,i=1;i<=m;i++){
		u=read();v=read();
		add(u,v);
	}
	for(int i=1;i<=n;i++) 
	if(!dfn[i]) tarjan(i);
	cnt=1;
	// for(int i=1;i<=n;i++) cout<<col[i]<<'\n';
	for(int i=1;i<=n;i++)
	for(int j=head[i];j;j=e[j].nxt){
		int v=e[j].to;
		if(col[i]^col[v]) add2(col[i],col[v]),++ru[col[v]];
	}
	for(int i=1;i<=sum;i++)
	if(!ru[i]) add2(0,i);
	dfs(0,-1);
	write(dp[0]),putchar('\n');
    return 0;
}

本地调试下的内存竟然达到了1024mb???请问一下这是为什么??

2021/8/19 15:20
加载中...