【随机】 FZU 2141 Sub-Bipartite Graph

来源:互联网 发布:斜顶开天窗 知乎 编辑:程序博客网 时间:2024/05/29 13:23

点击打开链接

这都行!求正解!@九爷

#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <iostream>#include <algorithm>#include <sstream>#include <cmath>using namespace std;#include <queue>#include <stack>#include <set>#include <vector>#include <deque>#include <map>#define cler(arr, val)    memset(arr, val, sizeof(arr))#pragma comment(linker, "/STACK:102400000,102400000")typedef long long  LL;const int MAXN = 500+1;const int MAXM = 140000;const int INF = 0x3f3f3f3f;const int mod = 1000000007;int a[10087],b[10087],point[109];void out(int x,int n){    int sum=0,ans[101];    for(int i=1;i<=n;i++)        if(point[i]==x) ans[sum++]=i;    printf("%d",sum);    for(int i=0;i<sum;i++)        printf(" %d",ans[i]);    puts("");}int main(){#ifndef ONLINE_JUDGE       freopen("in.txt", "r", stdin);   //  freopen("out.txt", "w", stdout);#endif    int n,m,t;    cin>>t;    while(t--)    {        cin>>n>>m;        for(int i=0;i<m;i++)            cin>>a[i]>>b[i];        int ans=0;        while(ans<m/2)        {            ans=0;            for(int i=1;i<=n;i++)                point[i]=rand()&1;            for(int i=0;i<m;i++)                ans+=point[a[i]]^point[b[i]];        }        out(1,n);        out(0,n);    }    return 0;}


0 0