cf1009 D. Relatively Prime Graph

这道题是一道暴力题,看的数据量大是瞎胡人的,如果每个数都和1构成一条边实际上也就100000个数字,nlogn也一定能过去

然后就是注意m也不能太小,如果小于n-1就没法成图了。也不能太大,太大连不了那么多边

然后为了保证图的连通性,先把1和每个点都连一遍

#include<bits/stdc++.h>
using namespace std;
int ans1[100010],ans2[100010];
int tot;
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    if(m<n-1)
    {
        printf("Impossible\n");
        return 0;
    }
    int flag=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(__gcd(i,j)==1)
            {
                tot++;
                ans1[tot]=i;
                ans2[tot]=j;
                if(tot==m)
                {
                    flag=1;
                    break;
                }
            }
        }
        if(flag)
           break;
    }
    //printf("%d\n",flag);
    if(flag)
    {
        printf("Possible\n");
        for(int i=1;i<=tot;i++)
          printf("%d %d\n",ans1[i],ans2[i]);
    }
    else
    {
        printf("Impossible\n");
    }
}

猜你喜欢

转载自www.cnblogs.com/lishengkangshidatiancai/p/10322599.html