Từ Trường THPT chuyên Lương Văn Tụy, Ninh Bình
Thông tin
include<bits/stdc++.h>
using namespace std; const int N=3005; int n,m,a[N][N],c[N],vis[N]; vector<pair<int,int>> g[N]; map<int,vector<pair<int,int>>> mp; bool dfs(int u) { vis[u]=1; for(auto x:g[u]) { int v=x.first,t=x.second;
if(!vis[v])
{
if(t==0) c[v]=c[u];
else c[v]=1-c[u];
if(!dfs(v)) return 0;
}
else
{
if(t==0)
{
if(c[v]!=c[u]) return 0;
}
else
{
if(c[v]==c[u]) return 0;
}
}
}
return 1;
} int main() { freopen("1.inp","r",stdin); freopen("1.out","w",stdout); ios::syncwithstdio(0); cin.tie(0); cin>>n>>m; vector<int> b; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>a[i][j]; b.pushback(a[i][j]); } sort(b.begin(),b.end()); b.erase(unique(b.begin(),b.end()),b.end()); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) a[i][j]=lowerbound(b.begin(),b.end(),a[i][j])-b.begin()+1; if(m%2!=0) { map<int,int> cnt; for(int i=1;i<=n;i++) { cnt[a[i][m/2+1]]++; if(cnt[a[i][m/2+1]]>1) { cout<<"No"; return 0; } } } for(int j=1;j<=m/2;j++) { mp.clear(); for(int i=1;i<=n;i++) { mp[a[i][j]].pushback({i,0}); mp[a[i][m-j+1]].pushback({i,1}); } for(auto it:mp) { auto v=it.second; if(v.size()>2) { cout<<"No"; return 0; } if(v.size()==2) { int u=v[0].first; int w=v[1].first; if(v[0].second==v[1].second) { g[u].pushback({w,1}); g[w].pushback({u,1}); } else { g[u].pushback({w,0}); g[w].pushback({u,0}); } } } } for(int i=1;i<=n;i++) { if(!vis[i]) { c[i]=0; if(!dfs(i)) { cout<<"No"; return 0; } } } cout<<"Yes"<<'\n'; vector<int> ans; for(int i=1;i<=n;i++) if(c[i]) ans.push_back(i);
cout<<ans.size()<<'\n';
for(int x:ans) cout<<x<<" ";
}