235592026-01-24 18:45:23abcdCseppkőbarlang (45 pont)cpp17Elfogadva 45/4548ms4780 KiB
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;

int n,m;

int idx(int i,int j){
    return (i-1)*m+j;
}
pii back(int x){
    int i=x/m,j=x%m;
    if(j==0){
        j=m;i--;
    }
    return {i+1,j};
}

void dfs(vector<vector<int>>& adj,vector<int>& vis,int v){
    vis[v]=true;
    for(int u:adj[v])
        if(!vis[u])dfs(adj,vis,u);
}
int main(){
    cin>>n>>m;
    int k=n*m;
    vector<vector<int>> adj(k+1),nm(n+1,vector<int>(m+1));
    set<pii> q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>nm[i][j];
            if(nm[i][j])
                q.insert({nm[i][j],idx(i,j)});
        }
    }
    vector<pii> xy={{0,-1},{-1,0},{0,1},{1,0}};
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(auto [a,b]:xy){
                int ii=i+a,jj=j+b;
                if(ii>n||ii<1||jj>m||jj<1||!nm[i][j]||!nm[ii][jj])continue;
                if(nm[ii][jj]>=nm[i][j])adj[idx(i,j)].push_back(idx(ii,jj));
            }
    vector<int> vis(k+1);
    vector<pii> ans;
    for(auto [a,b]:q){
        auto [x,y]=back(b);
        if(nm[x][y]&&!vis[b]){
            dfs(adj,vis,b);
            ans.push_back(back(b));
        }
    }
    cout<<ans.size()<<'\n';
    for(auto [a,b]:ans)cout<<a<<' '<<b<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/45
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva2/228ms4780 KiB
6Elfogadva2/227ms4056 KiB
7Elfogadva2/226ms4148 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva3/332ms3380 KiB
11Elfogadva3/348ms4572 KiB
12Elfogadva3/337ms3956 KiB
13Elfogadva3/337ms3748 KiB
14Elfogadva3/319ms2424 KiB
15Elfogadva3/329ms4104 KiB
16Elfogadva3/330ms4396 KiB
17Elfogadva3/332ms4116 KiB
18Elfogadva3/332ms4112 KiB
19Elfogadva3/328ms3636 KiB
20Elfogadva3/343ms4404 KiB