求助编译错误
  • 板块学术版
  • 楼主Lazy_Labs
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/1/29 14:56
  • 上次更新2023/10/28 10:25:08
查看原帖
求助编译错误
376137
Lazy_Labs楼主2022/1/29 14:56

RT(如图)

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define fr(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout)
#define dbout cerr<<"[DeBug]:"
#define mem(x,y) memset(x,y,sizeof(x))
inline int read()
{
 	int x(0),f(1);char c=getchar();
    while(c>'9'||c<'0')f=c=='-'?-1:1,c=getchar();
    while(c>='0'&&c<='9')x=x*10+c-48,c=getchar();
	return f*x;
}
struct Edge
{
	int u,v,f,c;
	Edge(int U,int V,int F,int C){u=U,v=V,f=F,c=C;}
};
const int INF=0x3f3f3f3f,N=50010,M=300010;
int head[N],to[M],edge[M],nxt[M],tot,d[N],now[M];
int n,m,s,t;
queue<int>q;
void add(int x,int y,int z)
{
	to[++tot]=y,edge[tot]=z,nxt[tot]=head[x],head[x]=tot;
	to[++tot]=x,edge[tot]=0,nxt[tot]=head[y],head[y]=tot;
}
bool bfs()
{
	memset(d,0,sizeof(d));while(!q.empty())q.pop();
	q.push(s);d[s]=1;now[s]=head[s];
	while(!q.empty())
	{
		int x=q.front();q.pop();
		for(int i=head[x];i;i=nxt[i])
		if(edge[i]&&!d[to[i]])
		{
			int y=to[i];
			q.push(y);
			now[y]=head[y];
			d[y]=d[x]+1;
			if(y==t)return true;
		}
	}
	return false;
}
int dfs(int x,int f)
{
	if(x==t)return f;
	int lft=f,i,k;
	for(i=now[x];i&&lft;i=nxt[i])
	if(edge[i]&&d[to[i]]==d[x]+1)
	{
		int y=to[i];
		k=dfs(y,min(edge[i],lft));
		if(!k)d[y]=0;
		edge[i]-=k;
		edge[i^1]+=k;
		lft-=k;
	}
	now[x]=i;
	return f-lft;
}
bool vis[N][N];
int main()
{
//	fr();
	n=read(),m=read();s=n+m+1;t=n+m+2;
	tot=1;
	for(int i=1;i<=m;i++)
	add(s,i,read());
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=read();j++)
		vis[i][read()]=1;
		add(m+i,t,read());
	}
	for(int i=1;i<=m;i++)
	{
		int now=i;
		for(int j=1;j<=n;j++)
		if(vis[j][i])
		{
			add(now,m+j,INF);
			now=m+j;
		}
	}
	int f=0,ans=0;
	while(bfs())
	while(f=dfs(s,INF))ans+=f;
	printf("%lld",ans);
	return 0;
}
2022/1/29 14:56
加载中...