Submission #1679864


Source Code Expand

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <memory.h>
#include <vector>

using namespace std;
typedef long long LL;
const int maxn = 2000005;
const int maxm = 105;
const int inf = 1<<29;

int ehead[maxn],ecnt=1;
struct edge {
	int u,v,vol,next;
}edg[maxn];
void add(int u,int v,int w) {
	edg[++ecnt]=(edge){u,v,w,ehead[u]};
	ehead[u]=ecnt;
	edg[++ecnt]=(edge){v,u,0,ehead[v]};
	ehead[v]=ecnt;
}

char g[maxm][maxm];
int col[maxm],row[maxm];
int in[maxm][maxm];
int out[maxm][maxm];
int S,T,cnt,n,m;

namespace dinic {
	int que[maxn],head,tail,lab[maxn];
	bool bfs() {
		memset(lab,-1,cnt+1<<2);
		que[head=tail=0]=S;lab[S]=1;
		while (head<=tail) {
			int u=que[head++];
			for (int v,j=ehead[u];j;j=edg[j].next)
			if (edg[j].vol&&lab[v=edg[j].v]==-1)
				lab[v]=lab[u]+1,que[++tail]=v;
		}
		return lab[T]!=-1; 
	}
	int dfs(int u,int cur) {
		int res=0;
		if (u==T) return cur;
		for (int v,j=ehead[u];j&&res<cur;j=edg[j].next)
		if (edg[j].vol&&lab[v=edg[j].v]==lab[u]+1) {
			int tmp=dfs(v,min(cur-res,edg[j].vol));
			edg[j].vol-=tmp;edg[j^1].vol+=tmp;res+=tmp;
		}
		if (!res) lab[u]=-1;
		return res;
	}
	int main() {
		int res=0;
		while (bfs()&&res<inf) res+=dfs(S,inf);
		return res>=inf?-1:res;
	}
}
int main()
{
	#ifdef Amberframe
		freopen("arc074f.in","r",stdin);
		freopen("arc074f.out","w",stdout);
	#endif
	scanf("%d %d",&n,&m);S=++cnt;T=++cnt;
	for (int i=1;i<=n;i++) scanf("%s",g[i]+1);
	for (int i=1;i<=n;i++) row[i]=++cnt;
	for (int i=1;i<=m;i++) col[i]=++cnt;
	for (int i=1;i<=n;i++)
	for (int j=1;j<=m;j++)
	if (g[i][j]!='.') {
		in[i][j]=++cnt;out[i][j]=++cnt;
		if (g[i][j]=='S') add(S,out[i][j],inf);
		if (g[i][j]=='T') add(in[i][j],T,inf);
		add(out[i][j],row[i],inf);
		add(out[i][j],col[j],inf);
		add(row[i],in[i][j],inf);
		add(col[j],in[i][j],inf);
		add(in[i][j],out[i][j],1);
	}
	printf("%d",dinic::main());
	return 0;
}

Submission Info

Submission Time
Task F - Lotus Leaves
User Amberframe
Language C++14 (GCC 5.4.1)
Score 800
Code Size 1964 Byte
Status AC
Exec Time 6 ms
Memory 8448 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:66:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);S=++cnt;T=++cnt;
                      ^
./Main.cpp:67:43: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for (int i=1;i<=n;i++) scanf("%s",g[i]+1);
                                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 4
AC × 54
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt
Case Name Status Exec Time Memory
0_00.txt AC 3 ms 6400 KB
0_01.txt AC 2 ms 6400 KB
0_02.txt AC 2 ms 6400 KB
0_03.txt AC 2 ms 6400 KB
1_00.txt AC 2 ms 6400 KB
1_01.txt AC 2 ms 6400 KB
1_02.txt AC 2 ms 6400 KB
1_03.txt AC 2 ms 6400 KB
1_04.txt AC 3 ms 6400 KB
1_05.txt AC 3 ms 8448 KB
1_06.txt AC 6 ms 8448 KB
1_07.txt AC 3 ms 6400 KB
1_08.txt AC 4 ms 8448 KB
1_09.txt AC 4 ms 8448 KB
1_10.txt AC 3 ms 6400 KB
1_11.txt AC 3 ms 6400 KB
1_12.txt AC 3 ms 6400 KB
1_13.txt AC 4 ms 6400 KB
1_14.txt AC 4 ms 6400 KB
1_15.txt AC 4 ms 6400 KB
1_16.txt AC 3 ms 6400 KB
1_17.txt AC 3 ms 6400 KB
1_18.txt AC 3 ms 6400 KB
1_19.txt AC 4 ms 6400 KB
1_20.txt AC 3 ms 6400 KB
1_21.txt AC 3 ms 6400 KB
1_22.txt AC 3 ms 6400 KB
1_23.txt AC 4 ms 6400 KB
1_24.txt AC 3 ms 6400 KB
1_25.txt AC 3 ms 6400 KB
1_26.txt AC 3 ms 6400 KB
1_27.txt AC 3 ms 6400 KB
1_28.txt AC 3 ms 6400 KB
1_29.txt AC 4 ms 6400 KB
1_30.txt AC 3 ms 6400 KB
1_31.txt AC 4 ms 6400 KB
1_32.txt AC 5 ms 6400 KB
1_33.txt AC 3 ms 6400 KB
1_34.txt AC 4 ms 6400 KB
1_35.txt AC 5 ms 6400 KB
1_36.txt AC 3 ms 6400 KB
1_37.txt AC 4 ms 6400 KB
1_38.txt AC 3 ms 6400 KB
1_39.txt AC 5 ms 6400 KB
1_40.txt AC 3 ms 6400 KB
1_41.txt AC 3 ms 6400 KB
1_42.txt AC 3 ms 6400 KB
1_43.txt AC 3 ms 6400 KB
1_44.txt AC 3 ms 6400 KB
1_45.txt AC 3 ms 6400 KB
1_46.txt AC 3 ms 6400 KB
1_47.txt AC 3 ms 6400 KB
1_48.txt AC 3 ms 6400 KB
1_49.txt AC 3 ms 6400 KB