제출 #992312

#제출 시각아이디문제언어결과실행 시간메모리
992312MarwenElarbiVision Program (IOI19_vision)C++17
21 / 100
16 ms1748 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; #define fi first #define se second #define ll long long #define pb push_back int arx[4]={1,-1,0,0}; int ary[4]={0,0,1,-1}; int n,m,k; int dp[31][31]; int cur; vector<int> res; set<pair<int,int>> st; bool valid(int x,int y){ if(x<0||x>=n||y<0||y>=m) return false; return true; } void dfs(int x,int y,int a,int b){ queue<pair<int,int>> q; q.push({x,y}); while(!q.empty()){ int x=q.front().fi; int y=q.front().se; q.pop(); if(dp[x][y]==k){ //cout <<dp[x][y]<<" "<<a<<" "<<b<<" "<<x<<" "<<y<<endl; st.insert({min(a*m+b,x*m+y),max(a*m+b,x*m+y)}); } for (int i = 0; i < 4; ++i) { int curx=x+arx[i]; int cury=y+ary[i]; if(valid(curx,cury)){ //cout <<"hey"<<endl; if(dp[curx][cury]<=dp[x][y]+1) continue; dp[curx][cury]=dp[x][y]+1; q.push({curx,cury}); } } } } void construct_network(int H, int W, int K) { n=H; m=W; k=K; cur=n*m; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { for (int k = 0; k < n; ++k) { for (int t = 0; t < m; ++t) { dp[k][t]=1e9; } } dp[i][j]=0; dfs(i,j,i,j); /*for (int k = 0; k < n; ++k) { for (int t = 0; t < m; ++t) { cout << dp[k][t]<<" "; }cout <<endl; }cout <<endl;*/ } } for(auto u:st){ add_and({u.fi,u.se}); res.pb(cur); cur++; } add_or(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...