CF 129B - Students and Shoelaces

来源:互联网 发布:java double e 编辑:程序博客网 时间:2024/04/29 11:33

n个人,m对关系。每次能删除当前所有只跟一个人有关系的人,删到不能删要搞多少次。。。map+set不用想什么事,无脑拍就行了。。。

#include<iostream>#include<algorithm>#include<vector>#include<string>#include<stack>#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include<fstream>#include<map>#include<set>#define FF(i, a, b) for(i=a; i<b; i++)#define FD(i, a, b) for(i=a; i>b; i--)#define CLR(a, b) memset(a, b, sizeof(a))#define LL long longusing namespace std;int n, m;map<int, set<int> > s;set<int> tmp;set<int> :: iterator iter, it;int main(){    while(~scanf("%d%d", &n, &m))    {        s.clear();          int a, b, ans = 0, flag = 1;        while(m--)        {            scanf("%d%d", &a, &b);            s[a].insert(b); s[b].insert(a);        }        while(flag)        {            flag = 0;   tmp.clear();            FF(a, 1, n+1)            {                int k = s[a].size();                if(k == 1)                {                    flag = 1;                    tmp.insert(a);                }            }            if(flag)            {                for(iter=tmp.begin(); iter!=tmp.end(); iter++)                {                    it = s[*iter].begin();                    s[*it].erase(*iter);                    s[*iter].clear();                }                ans++;            }        }        printf("%d\n", ans);    }    return 0;}


原创粉丝点击