AtCoder Beginner Contest 075 D

来源:互联网 发布:pr软件在那里下载 编辑:程序博客网 时间:2024/06/05 04:57

这道题说是暴力,但其实暴力里面也是有些技巧的,比如你不能按照点去遍历,那么这样就有些情况考虑不到;
我们可以先把横坐标排下序,然后纵坐标排下序,这样我们就知道了每一种举行的情况,只多不少.
遍历求出最小面积即可
代码

#include <bits/stdc++.h>#define ll long long#define pb push_backusing namespace std;int N,M;int Map[55][55];int visit[55];int main(){    cin>>N>>M;    for(int i = 1;i<=M;i++)    {        int a,b;        cin>>a>>b;        visit[a]++;        visit[b]++;        Map[a][b] = Map[b][a] = 1;    }    int sum = 0;    int xi;    bool falg = true;    while(1)    {        falg = true;        for(int i = 1;i<=N;i++)        {            if(visit[i]==1)            {                sum++;                xi = i;                falg = false;                visit[i]--;                break;            }        }        if(falg) break;        for(int i = 1;i<=N;i++)        {            if(Map[xi][i]==1)                visit[i]--;        }    }    cout<<sum<<endl;    return 0;}
原创粉丝点击