From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- semestr-4/sieci/warsztaty8/186164.cpp | 270 ++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 semestr-4/sieci/warsztaty8/186164.cpp (limited to 'semestr-4/sieci/warsztaty8/186164.cpp') diff --git a/semestr-4/sieci/warsztaty8/186164.cpp b/semestr-4/sieci/warsztaty8/186164.cpp new file mode 100644 index 0000000..d747a00 --- /dev/null +++ b/semestr-4/sieci/warsztaty8/186164.cpp @@ -0,0 +1,270 @@ +#include + +using namespace std; + +#define st first +#define nd second +#define pb push_back +#define sz(x) (int)(x).size() +#define ll long long +ll mod=1000000007; +int inf=1000000007; +ll infl=1000000000000000007; + +int a[77][77]; +int id[77][77]; +int id1[77][77]; +int id2[77][77]; +setG[15007]; +int cap1[3507][3507]; +unordered_mapcap[15007]; +int o[15007]; +bool odw[15007]; +int s=1,t; +char ans[77][77][3][3]; + +bool dfs(int v) +{ + //cout<>n>>m; + for(int i=1;i<=n;i++) + { + for(int j=1;j<=m;j++) + { + cin>>a[i][j]; + for(int k=0;k<3;k++) for(int l=0;l<3;l++) ans[i][j][k][l]='.'; + if(a[i][j]!=0) ans[i][j][1][1]='O'; + sum[(i+j)%2]+=a[i][j]; + } + } + if(sum[0]!=sum[1]) gg(); + edge(1,2,sum[0]); + int it=2; + for(int i=1;i<=n;i++) + { + for(int j=1;j<=m;j++) + { + if(a[i][j]==0) continue; + id[i][j]=++it; + if(a[i][j]==2) + { + id1[i][j]=++it; + id2[i][j]=++it; + if((i+j)%2) + { + edge(id[i][j],id1[i][j],1); + edge(id[i][j],id2[i][j],1); + } + else + { + edge(id1[i][j],id[i][j],1); + edge(id2[i][j],id[i][j],1); + } + } + } + } + it+=2; + t=it; + edge(it-1,it,sum[0]); + for(int i=1;i<=n;i++) + { + for(int j=1;j<=m;j++) + { + if(a[i][j]==0) continue; + if((i+j)%2) edge(2,id[i][j],a[i][j]); + else edge(id[i][j],it-1,a[i][j]); + } + } + for(int i=1;i<=n;i++) + { + for(int j=1;j<=m;j++) + { + if((i+j)%2==0||a[i][j]==0) continue; + if(a[i-1][j]!=0) connect(i,j,i-1,j); + if(a[i+1][j]!=0) connect(i,j,i+1,j); + if(a[i][j-1]!=0) connect(i,j,i,j-1); + if(a[i][j+1]!=0) connect(i,j,i,j+1); + } + } + if(flow()!=sum[0]) gg(); + //cout<