栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1636 Prison rearrangement

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1636 Prison rearrangement

#include<iostream>using namespace std;int n,m;int cnt=0;typedef struct e{    int data;    e *next;}e;e edge[401];int v[401];int a[402],b[402];int dp[402][402];void dfs(int s){    v[s]=1;    if(s<=n)        a[cnt]++;    else        b[cnt]++;    e *p=edge[s].next;    while(p){        if(!v[p->data]) dfs(p->data);        p=p->next;    }}void solve(){    int i,j,k;    memset(dp,0,sizeof(dp));    dp[0][0]=1;    for(k=1;k<=cnt;k++)        for(i=n/2;i>=a[k];i--) for(j=n/2;j>=b[k];j--)     dp[i][j]=dp[i][j]||dp[i-a[k]][j-b[k]];    for(i=n/2;i>=0;i--)        if(dp[i][i]) break;    cout<<i<<endl;}void bfs(){    int i,j,k;    cnt=0;    memset(v,0,sizeof(v));    memset(a,0,sizeof(a));    memset(b,0,sizeof(b));    for(i=1;i<=2*n;i++)        if(v[i]==0)        { cnt++; dfs(i);        }}void read(){    int i,j,k,s,t;    int K;    cin>>K;    while(K--)    {        cin>>n>>m;        for(i=1;i<=2*n;i++)        { edge[i].data=i; edge[i].next=0;        }        for(i=1;i<=m;i++)        { cin>>j>>k; e *p=new e; p->data=k+n; p->next=edge[j].next; edge[j].next=p; e *q=new e; q->data=j; q->next=edge[k+n].next; edge[k+n].next=q;        }        bfs();        solve();    }}int main(){    read();    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号