2013年10月25日 星期五

[HOJ] 293 - Graph Reconstruction


#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> s[100005];
int v[100005],n,m;
int check(int x,int y){
    int i;
    for(i=0;i<s[x].size();i++)
        if(s[x][i]==y)
            return 1;
    return 0;
}
void reset(){
    random_shuffle(v,v+n);
    int i;
    for(i=0;i<min(n-1,m);i++)
        if(check(v[i],v[i+1]))
            return;
    if(n==m && check(v[0],v[n-1])) return;
    for(i=0;i<min(n-1,m);i++)
        printf("%d %d\n",v[i],v[i+1]);
    if(n==m) printf("%d %d\n",v[0],v[n-1]);
    exit(0);
}
int main(){
    int i,x,y;
    scanf("%d%d",&n,&m);
    for(i=0;i<m;i++){
        scanf("%d%d",&x,&y);
        s[x].push_back(y);
        s[y].push_back(x);
    }
    for(i=0;i<n;i++) v[i]=i+1;
    for(i=0;i<1000;i++){
        reset();
    }
    puts("-1");
}

沒有留言:

張貼留言