Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- weak weak we ak we akwea weak we
- weak weak we ak weak weak we ak we
- weakweak we ak wea ak we akwe
- wea we ak we ak we akwe
- wea we ak we ak we akwe
- wea eak weak we ak we ak we
- wea wea ak we ak weak we
- we
- we ak wea ak weak we
- we ak wea weak wea eak we
- we ak we ak wea wea we we
- weak we ak we we we we
- we we ak we we we we
- we wea weak wea wea weak weak
- weak wea akw weak weak
- */
- //#define _GLIBCXX_DEBUG //is only used when couldn't find bug
- using namespace std;
- #pragma GCC optimize ("Ofast")
- /*
- Never gonna give you up
- Never gonna let you down
- Never gonna run around and desert you
- Never gonna make you cry
- Never gonna say goodbye
- Never gonna tell a lie and hurt you
- */
- //headers
- #include <vector>
- #include <queue>
- #include <algorithm>
- #include <cmath>
- #include <utility>
- #include <bitset>
- #include <set>
- #include <string>
- #include <stack>
- #include <iomanip>
- #include <map>
- #include <memory.h>
- #include <deque>
- #include <time.h>
- #include <assert.h>
- #include <unordered_map>
- #include <unordered_set>
- #include <sstream>
- #include <random>
- //defines
- typedef long long LL;
- typedef pair<int,int> pii;
- typedef pair<LL,LL> pll;
- typedef vector<int> vi;
- typedef vector<LL> vl;
- typedef vector<vector<int>> vvi;
- typedef vector<vector<LL>> vvl;
- #define pb push_back
- #define F first
- #define S second
- #define mid (LB+RB)/2
- #define mkp make_pair
- //iterators
- #define iter(x) x.begin(),x.end()
- #define aiter(a,n) a,a+n
- //loops
- #define REP(n) for (int ___=n > 0 ? n : 0;___--;)
- #define REP0(i,n) for (int i=0,___=n;i<___;++i)
- #define REP1(i,n) for (int i=1,___=n;i<=___;++i)
- #define MEM(e,val) memset (e,val,sizeof(e))
- /*
- When he said Super Idol的笑容 都没你的甜 八月正午的阳光 都没你耀眼 热爱105℃的你 滴滴清纯的蒸馏水 你不知道你有多可爱 跌倒后会傻笑着再站起来 你从来都不轻言失败 对梦想的执着一直不曾更改 很安心 当你对我说 不怕有我在 放着让我来 勇敢追自己的梦想 那坚定的模样 Super Idol的笑容 都没你的甜 八月正午的阳光 都没你耀眼 热爱105℃的你 滴滴清纯的蒸馏水 在这独一无二 属于我的时代 不怕失败来一场 痛快的热爱 热爱105℃的你 滴滴清纯的蒸馏水 在这独一无二 属于我的时代 莫忘了初心常在 痛快去热爱 爱105℃的你 滴滴清纯的蒸馏水 喝一口又活力全开 再次回到最佳状态 喝一口哟 你不知道你有多可爱 跌倒后会傻笑着再站起来 你从来都不轻言失败 对梦想的执着一直不曾更改 很安心 当你对我说 不怕有我在 放着让我来 勇敢追自己的梦想 那坚定的模样 Super Idol的笑容 都没你的甜 八月正午的阳光 都没你耀眼 热爱105℃的你 滴滴清纯的蒸馏水 在这独一无二 属于我的时代 不怕失败来一场 痛快的热爱 热爱105℃的你 滴滴清纯的蒸馏水 在这独一无二 属于我的时代 莫忘了初心常在 痛快去热爱 热爱105℃的你 滴滴清纯的蒸馏水 喝一口又活力全开 再次回到最佳状态 喝一口又活力全开
- I really felt that.
- every one is so dian except me
- still too weak 咩噗
- */
- //IO
- #include <cstdio>
- #include <iostream>
- #include <fstream>
- #define want_to_be_more_dian ios_base::sync_with_stdio(false),cin.tie(0);
- //pbds
- /*
- #include <ext/pb_ds/tree_policy.hpp>
- #include <ext/pb_ds/assoc_container.hpp>
- #include <ext/pb_ds/priority_queue.hpp>
- using namespace __gnu_pbds;
- //tree <pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update>;
- */
- //constants
- #include <climits>
- const int maxn = 230,mod = 0;
- const long long INF = LLONG_MAX;
- const double eps = 0;
- //workspace
- #define int LL
- struct DIN{
- struct E{
- LL v, c, r;
- E(int v, int c, int r):
- v(v), c(c), r(r){}
- };
- vector<E> adj[maxn];
- void add(int u, int v, int c){
- adj[u].pb(E(v, c, (int) adj[v].size()));
- adj[v].pb(E(u, 0, (int) adj[u].size() - 1));
- }
- int n, s, t;
- void init(int nn, int ss, int tt){
- n = nn, s = ss, t = tt;
- for(int i = 0; i <= n; ++i)
- adj[i].clear();
- }
- int le[maxn], it[maxn];
- int bfs(){
- fill(le, le + maxn, -1); le[s] = 0;
- queue<int> q; q.push(s);
- while(!q.empty()){
- int u = q.front(); q.pop();
- for(auto [v, c, r]: adj[u]){
- if(c > 0 && le[v] == -1)
- le[v] = le[u] + 1, q.push(v);
- }
- }
- return ~le[t];
- }
- int dfs(int u, int f){
- if(u == t) return f;
- for(int &i = it[u]; i < (int) adj[u].size(); ++i){
- auto &[v, c, r] = adj[u][i];
- if(c > 0 && le[v] == le[u] + 1){
- int d = dfs(v, min(c, f));
- if(d > 0){
- c -= d;
- adj[v][r].c += d;
- return d;
- }
- }
- }
- return 0;
- }
- LL flow(){
- LL ans = 0, d;
- while(bfs()){
- fill(it, it + maxn, 0);
- while((d = dfs(s, INF)) > 0) ans += d;
- }
- return ans;
- }
- } din;
- int adj[501][501];
- inline void solve(){
- int n;
- cin >> n;
- int m = (n+1)/2;
- REP1(i, n) REP1(j, n) cin >> adj[i][j];
- din.init(m * 2+1, 0, m*2+1);
- REP1(i, m){
- din.add(0, i, INF);
- din.add(m+i, m*2+1, INF);
- }
- for (int i=1;i<=n;i+=2){
- din.add(i/2+1, m+1, adj[i][1]);
- for (int j=3;j<n;j+=2){
- din.add(i/2+1, m+j/2+1, adj[j-1][i] + adj[i][j+1]);
- }
- if (n & 1) din.add(i/2+1, m*2, adj[i][n-1]);
- }
- cout << din.flow();
- }
- signed main(){
- want_to_be_more_dian
- //int t,i=1; for (int ;cin;)//use in multi-testcases and end in EOF problems
- //int t,i=1; for (cin >> t;i<=t;++i)//use in multi-testcases problems
- //cout << "Case #" << i << ": ",//use in Google, FB competitions
- solve();//always used
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment