zoukankan      html  css  js  c++  java
  • poj 1904 King's Quest 强连通分量+匹配

    ==========
    题目链接King's Quest

    题解:通过原有的完美匹配,反向建边,在同一个强连通分量里面的王子和公主可以匹配,而不影响其他王子的结婚对象。

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #define pb push_back
    #define ll long long
    #define PI 3.14159265
    using namespace std;
    const int maxn=4e3+5;
    vector<int>g[maxn];
    const int max_n=2e3+1;
    vector<int>rg[maxn];
    vector<int>ans;
    vector<int>vs;
    bool vis[maxn];
    int cmp[maxn]; 
    int N,M; 
    void dfs(int v)
    {
    	vis[v]=true;
    	for(int i=0;i<g[v].size();i++)
    	{
    		if(!vis[g[v][i]])dfs(g[v][i]);
    	}
    	vs.pb(v);
    }
    void rdfs(int v,int k)
    {
    	vis[v]=true;
    	cmp[v]=k;
    	for(int i=0;i<rg[v].size();i++)
    	{
    		if(!vis[rg[v][i]])rdfs(rg[v][i],k);
    	}
    }
    int scc()
    {
    	for(int i=1;i<=N;i++)
    	{
    		if(!vis[i])dfs(i);
    	}
    	memset(vis,false,sizeof(vis));
    	int k=0; 
    	for(int i=vs.size()-1;i>=0;i--)
    	{
    		if(!vis[vs[i]])rdfs(vs[i],k++);
    	} 
    	return k;
    }
    int main()
    {
    	std::ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	cin>>N;
    	for(int i=1;i<=N;i++)
    	{
    		int k,b;
    		cin>>k;
    		for(int j=0;j<k;j++)
    		{
    			cin>>b;
    			g[i].pb(b+max_n);
    			rg[b+max_n].pb(i);
    		}
    	}
    	for(int i=1;i<=N;i++)
    	{
    		int b;
    		cin>>b;
    		g[b+max_n].pb(i);
    		rg[i].pb(b+max_n);
    	}
    	int n=scc();
    	for(int i=1;i<=N;i++)
    	{
    		for(int j=0;j<g[i].size();j++)
    		{
    			if(cmp[i]==cmp[g[i][j]])
    			ans.pb(g[i][j]-max_n);
    		}
    		sort(ans.begin(),ans.end());
    		cout<<ans.size()<<' ';
    		for(int j=0;j<ans.size();j++)
    		{
    			cout<<ans[j]<<' '; 
    		}
    		cout<<'
    ';
    		ans.clear(); 
    	}
    	return 0;
     } 
    
  • 相关阅读:
    python主成分分析
    matplotlib绘图pie
    cpu监控:mpstat命令
    cpu监控:dstat
    MongoDB--安装部署
    Linux-网络管理
    Apache 虚拟主机配置
    Apache 访问控制
    Apache 域名跳转配置
    Apache 日志管理
  • 原文地址:https://www.cnblogs.com/lhclqslove/p/7661913.html
Copyright © 2011-2022 走看看