求助,莫名其妙与答案很接近但不对
  • 板块P2656 采蘑菇
  • 楼主dshzsh
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/9/28 19:32
  • 上次更新2023/11/4 05:26:22
查看原帖
求助,莫名其妙与答案很接近但不对
200116
dshzsh楼主2021/9/28 19:32
#include<bits/stdc++.h>
using namespace std;
const int maxn=80010;
const int maxm=200010;
struct ee{
	int to;
	int next;
	int val;
	int hf;
};
int head[maxn],cnt;
ee bb[maxm*2];
void jb(int q,int z,int v,int h)
{
	bb[++cnt].to=z;
	bb[cnt].val=v;
	bb[cnt].hf=h;
	bb[cnt].next=head[q];
	head[q]=cnt;
}
int head2[maxn],a[maxn];
void jb2(int q,int z,int v)
{
	bb[++cnt].to=z;
	bb[cnt].val=v;
	bb[cnt].next=head2[q];
	head2[q]=cnt;
}
int dfn[maxn],low[maxn],vis[maxn];
int dnt,fa[maxn];
stack<int> dl;
void tj(int x)
{
	dfn[x]=low[x]=++dnt;
	vis[x]=1;dl.push(x);
	for(int i=head[x];i;i=bb[i].next)
	{
		int sx=bb[i].to;
		if(!dfn[sx])
		{
			tj(sx);
			low[x]=min(low[x],low[sx]);
		}
		else if(vis[sx]) low[x]=min(low[x],dfn[sx]);
	}
	if(low[x]==dfn[x])
	{
		vis[x]=0;fa[x]=x;
		while(dl.top()!=x)
		{
			int sx=dl.top();dl.pop();
			vis[sx]=0;
			fa[sx]=x;
		}
		dl.pop();
	}
}
int js(int v,int h)
{
	int ans=v;
	while(v)
	{
		v=v*h/10;
		ans+=v;
	}
	return ans;
}
int rd[maxn],dp[maxn];
void dfs(int x)
{
	for(int i=head2[x];i;i=bb[i].next)
	{
		int sx=bb[i].to;
		rd[sx]++;
		dfs(sx);
	}
}
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int x,y,val,hf;
		double hh;
		scanf("%d%d%d%lf",&x,&y,&val,&hh);
		hf=(int)(hh*10);
		jb(x,y,val,hf);
	}
	int s;
	scanf("%d",&s);
	for(int i=1;i<=n;i++)//缩点
		if(!dfn[i]) tj(i);
	for(int x=1;x<=n;x++)//重建图
	{
		for(int i=head[x];i;i=bb[i].next)
		{
			int sx=bb[i].to;
			if(fa[x]==fa[sx])
				a[fa[x]]+=js(bb[i].val,bb[i].hf);
			else
				jb2(fa[x],fa[sx],bb[i].val);
		}
	}
	dfs(fa[s]);
	queue<int> dl;
	dl.push(fa[s]);
	int ans=0;
	while(!dl.empty())//跑图
	{
		int x=dl.front();dl.pop();
		ans=max(dp[x]+a[x],ans);
		for(int i=head2[x];i;i=bb[i].next)
		{
			int sx=bb[i].to;
			dp[sx]=max(dp[sx],a[x]+dp[x]+bb[i].val);
			rd[sx]--;
			//printf("%d:%d\n",sx,rd[sx]);
			if(rd[sx]==0)
				dl.push(sx);
		}
	}
	printf("%d\n",ans);
	return 0;
}

看测评与答案很接近,但布吉岛是什么问题

2021/9/28 19:32
加载中...