玉米之花

 

Font Size: Aa Aa Aa

Description

    通灵人大战(Shaman Fight)已经在新世纪演变成了诸神的战争--玉米之花(Flower Of Maize),为了守护当今的通灵王,麻仓花决定在2个通灵军团当中挑选自己的队友进行战斗.这2个通灵军团各有N个通灵者,但是这2个军团间经常发生战斗,所以他们之中某些人存在矛盾关系,不过同一军团内并不存在矛盾.某两个通灵者之间存在矛盾关系即表示这两人无法在同一个队伍中共存,也就是发生内斗.为了让自己的队伍保持最高的战斗力,麻仓花决定挑选尽量多的通灵者加入自己的队伍,同时保证队伍里不发生内斗.

Input

对于每组测试数据,第一行输入两个整数N,M(1<=N<=15 , 0<=M<=N*N).接下来输入M行,每行输入两个整数a,b(1<=a , b<=N)表示军团一的a和军团二的b之间存在矛盾.数据保证两个人之间最多只存在一条矛盾关系.

Output

对于每组测试数,第一行输出最多的通灵者人数x.
接下来x行每行输出两个数,分别表示挑选出来的通灵者的军团编号以及该通灵者自身的编号.(按任意顺序输出,若存在多种答案,请输出任意一种)

Sample Input

3 5
1 1
1 2
1 3
2 1
3 1
	
3 3
1 3
2 1
3 2

Sample Output

4
1 2
2 2
1 3
2 3
3
2 1
2 2
2 3

 

 

 

参考代码如下:

#include<stdio.h> 

#include<string.h> 
#include<vector> 
using namespace std; 
vector<int>E[20]; 
int main() 

    int n,m,i; 
    while(scanf("%d%d",&n,&m)!=EOF) 
    { 
        for(i=0;i<=20;i++) 
        E[i].clear(); 
        for(i=1;i<=m;i++) 
        { 
            int a,b; 
            scanf("%d%d",&a,&b); 
            E[a].push_back(b); 
        } 
        bool a[20],b[20]; 
        memset(a,true,sizeof(a)); 
        memset(b,true,sizeof(b)); 
        for(i=1;i<=n;i++) 
        { 
            int le=E[i].size(); 
            if(le>1) 
                a[i]=false; 
            else
            { 
                for(int j=0;j<le;j++) 
                b[E[i][j]]=false; 
            } 
        } 
        int ans=0; 
        for(i=1;i<=n;i++) 
        { 
            if(a[i]) 
            ans++; 
            if(b[i]) 
            ans++; 
        } 
        printf("%d\n",ans); 
        for(i=1;i<=n;i++) 
        { 
            if(a[i]) 
            printf("1 %d\n",i); 
            if(b[i]) 
            printf("2 %d\n",i); 
        } 
    } 
    return 0; 
}

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值