二分图学习 - hiho1121

来源:互联网 发布:excel统计不同数据个数 编辑:程序博客网 时间:2024/06/05 00:16

题目链接:http://hihocoder.com/problemset/problem/1121


题解:二分图染色,写了三遍才搞定

#include <cstdio>#include <vector>#include <cstring>using namespace std; vector< vector<int> > vi; const int size = 1e4+5;int cr[size];int n, m;int tra(int x) {for ( int i = 0; i < vi[x].size(); i ++ ) {int p = vi[x][i];if(cr[p] == 0) {cr[p] = -cr[x];if(tra(p) == false) return false;} else if(cr[p] == cr[x]) return false;}return true;}int main() {freopen("Gra.in","r",stdin);int tst;scanf("%d", &tst);while( tst -- ) {scanf("%d %d", &n, &m);vi.clear();vi.resize(n+1);memset(cr, 0, sizeof(cr));for ( int i = 0; i < m; i ++ ) {int x, y;scanf("%d %d", &x, &y);vi[x].push_back(y); vi[y].push_back(x);}int fg = 1;for ( int i = 1; i <= n; i ++ ) {if(cr[i] == 0) {cr[i] = 1;if(tra(i) == false) {fg = 0;break;}}}if( fg == 0 ) puts("Wrong");else puts("Correct");}return 0;}


1 0
原创粉丝点击