求助关于本地过了但是洛谷上WA测试点#8
查看原帖
求助关于本地过了但是洛谷上WA测试点#8
766339
Crazyouth楼主2023/8/11 10:42

rt.

本地:

洛谷:

代码:

#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define ll long long
#define ull unsigned long long
#define re register
#define il inline
const int N=310;
const int mod=998244353;
int a[N][N],b[N][N],n,m,add[N][N],head[N<<3],nxt[N<<4],to[N<<3],wt[N<<4],cnt,dist[N<<3],vis[N<<3],tot[N<<3];
il int read()
{
	int f=1,x=0;
	char c=getchar();
	if(c=='-') f=-1,c=getchar();
	while(c>='0'&&c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return f*x;
}
il void addedge(int u,int v,int w)
{
	cnt++;
	nxt[cnt]=head[u];
	head[u]=cnt;
	to[cnt]=v;
	wt[cnt]=w;
}
int spfa()
{
	memset(dist,0x3f,sizeof dist);
	memset(vis,0,sizeof vis);
	memset(tot,0,sizeof tot);
	int u,v;
	queue<int> q;
	dist[0]=0;
	vis[0]=1;
	q.push(0);
	while(!q.empty())
	{
		u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=head[u];i;i=nxt[i])
		{
			v=to[i];
			if(dist[v]>dist[u]+wt[i])
			{
				dist[v]=dist[u]+wt[i];
				if(!vis[v])
				{
					vis[v]=1;
					tot[v]++;
					if(tot[v]==n+m+1) return 0;
					q.push(v);
				}
			}
		}
	}
	return 1;
}
il void solve()
{
	cin>>n>>m;
	memset(head,0,sizeof head);
	memset(nxt,0,sizeof nxt);
	memset(to,0,sizeof to);
	memset(wt,0,sizeof wt);
	for(int i=2;i<=n;i++)
	for(int j=2;j<=m;j++)
	cin>>b[i][j];
	for(int i=2;i<=n;i++)
	for(int j=2;j<=m;j++)
	a[i][j]=b[i][j]-a[i-1][j]-a[i][j-1]-a[i-1][j-1];
	for(int i=1;i<=n+m;i++) addedge(0,i,0);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		if((i+j)%2==0) 
		{
			addedge(n+m+j,i,(int)1e6-a[i][j]);
			addedge(i,n+m+j,a[i][j]);
		}
		else
		{
			addedge(i,n+m+j,(int)1e6-a[i][j]);
			addedge(n+m+j,i,a[i][j]);
		}
	}
	if(!spfa())
	{
		cout<<"NO"<<endl;
		return;
	} 
	cout<<"YES"<<endl;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		if((i+j)%2==0) add[i][j]=dist[i]-dist[j+n+m];
		else add[i][j]=dist[j+n+m]-dist[i];
	} 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		cout<<a[i][j]+add[i][j]<<" ";
		cout<<endl;
	}
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	solve();
	return 0;
}
2023/8/11 10:42
加载中...