2 条题解

  • 0
    @ 2026-8-4 10:45:22

    有一些类似于拓扑排序的做法

    思路

    注意到如果一个奶牛朋友圈只剩下一头奶牛未被邀请,那么他也会被邀请,我们尝试在邀请一头时访问所有他所在的奶牛朋友圈,并将他删去,若此朋友圈只剩下一头奶牛,那么把他邀请即可。整个过程用BFS即可。

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    vector<int>G[N];
    set<int>s[N];
    bool v[N];
    int main()
    {
    	int n,m;scanf("%d%d",&n,&m);
    	for(int i=1;i<=m;i++)
    	{
    		int l;scanf("%d",&l);
    		for(int j=1,x;j<=l;j++)
    		{
    			scanf("%d",&x);
    			s[i].insert(x);
    			G[x].push_back(i);
    		}
    	}
    	int ans=0;
    	queue<int>Q;Q.push(1);
    	while(!Q.empty())
    	{
    		int x=Q.front();Q.pop();
    		if(v[x])continue;
    		v[x]=1;ans++;
    		for(int i:G[x])
    		{
    			s[i].erase(x);
    			if(s[i].size()==1)Q.push(*s[i].begin());
    		}
    	}
    	printf("%d\n",ans);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 17:01:48

      by hansang:

      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+10;
      set<int> S[N]; 
      queue<int> Q; bool v[N];
      vector<int> G[N];
      int main(){
          int n, m; scanf("%d%d", &n, &m);
          for(int i=1; i<=m; i++){
              int x; scanf("%d", &x);
              for(int j=1; j<=x; j++){
                  int d; scanf("%d", &d);
                  S[i].insert(d);
                  G[d].push_back(i);
              }
          }
          memset(v, 0, sizeof(v));
          Q.push(1); v[1]=1; int ans=1;
          while(!Q.empty()){
              int x=Q.front(); Q.pop();
              for(int y: G[x]){
                  S[y].erase(x);
                  if(S[y].size()==1){
                      auto it=S[y].begin();
                      if(v[*it]) continue;
                      Q.push(*it); v[*it]=1;
                      ans++;
                  }
              }
          }
          printf("%d\n", ans);
          return 0;
      }
      
      • 1

      *【STL:set】宴会邀请[USACO13JAN] Party Invitations S

      信息

      ID
      2631
      时间
      1000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      53
      已通过
      18
      上传者