• VNOJ
  • Trang chủ
  • Danh sách bài
  • Các bài nộp
  • Thành viên
    >
    • Tổ chức
  • Các kỳ thi
  • Wiki
  • Thông tin
    >
    • Cpp Refference
    • Python Refference
    • FAQ
    • Trình chấm ngoài
    • Tag
    • Máy chấm
    • Devlog
    • Github
    • Tickets
    • Thư viện đề thi
    • Đề xuất contest
  • Tạp chí
    • Giao diện
    • Ngôn ngữ VI EN
Đăng nhập  hoặc  Đăng ký

nb_xamaison_nguyenducduy

  • Thông tin
  • Blog

Số bài đã giải: 43
Hạng điểm: #7434
Tổng điểm: 8,17
Đóng góp: 0

Xem các bài nộp

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<&lt;ans.size()&lt;&lt;'\n';
for(int x:ans) cout<&lt;x&lt;&lt;" ";

}

Huy hiệu

Người dùng này không có huy hiệu nào.

«    »
CN
T2
T3
T4
T5
T6
T7
Ít
Nhiều

dựa trên nền tảng DMOJ | theo dõi VNOI trên Github và Facebook