生物课程

生物课程

https://ac.nowcoder.com/acm/problem/14134

链接:https://ac.nowcoder.com/acm/problem/14134
来源:牛客网

题目描述
𝑅𝑒𝑘𝑖是一名武侦高狙击科的学生,武侦高也设有基础学科,现在她正
在完成生物课的作业。
给出一张𝑛个点𝑚条边的无向图,这张无向图描述了一个细胞,细胞有
三种:X型、Y型还是I型。

如图,虚线方向的链可以无限延伸,现在需要判断给定的图是哪一种
细胞,或者都不是。
输入描述:
第一行,两个正整数𝑛,𝑚。
接下来𝑚行,每行两个正整数𝑢, 𝑣描述一条无向边。
输出描述:
输出这种细胞的类型,若都不是输出NotValid。
示例1
输入
复制
7 6
1 2
1 3
1 4
1 5
5 6
6 7
输出
复制
X
示例2
输入
复制
7 6
1 2
1 3
3 4
1 5
5 6
6 7
输出
复制
Y
示例3
输入
复制
2 1
1 2
输出
复制
I
示例4
输入
复制
8 7
1 2
1 3
1 4
4 5
5 6
5 7
5 8
输出
复制
NotValid
备注:
对于100%的数据,2 ≤ 𝑛 ≤ 500,0 ≤ 𝑚 ≤ 𝑛*(𝑛−1)/2,没有重边和自环。

#include<bits/stdc++.h>
using namespace std;
vector<int>v[511];
int main()
{
    int n,m,fl=0,i,a,b,si=0,y=0;
    cin>>n>>m;
    for(i=0;i<m;i++)
    {
        cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    for(i=1;i<=n;i++)
    {
        if(v[i].size()==4)
        {
            si++;
            if(si+y>1)
            {

                fl=1;
                break;
            }
        }
        else if(v[i].size()==3)
        {
            y++;
            if(y+si>1)
            {


                fl=1;
                break;
            }

        }
        else if(v[i].size()<=2);//一个点连着两个没关系,但是连着超过四个的就好像有问题了
        else {

            fl=1;
            break;
        }


    }
    if(fl==1)
    {
        printf("NotValid");
    }
   else {
        if (si == 1) {
            printf("X");
        } else if (y == 1) {
            printf("Y");
        }
        else
            printf("I");
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务