Codeforces Round #323 A Asphalting Roads

来源:互联网 发布:纺织服装行业协会数据 编辑:程序博客网 时间:2024/06/10 12:30

题意:给你n*n个组数,要在n*n的格子里面,每个交点铺沥青,每组数有两个数值一个为行标一个为列标,问你在这n*n个组数中,在满足所有的行和列都填上要在哪几个工人处铺路,最后将工人按升序输出、

思路:直接标记,如果当前行和列没有被标记那么选择当前工人、最后直接输出便可、

AC代码:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 2510;int vis[maxn];int viz[maxn];int b[maxn];int x,y;int n;int main(){    while(scanf("%d",&n)!=EOF){        memset(vis,0,sizeof(vis));        memset(viz,0,sizeof(viz));        memset(b,0,sizeof(b));        int ans=0;        for(int i=0;i<n*n;i++){            scanf("%d %d",&x,&y);            if(!vis[x]&&!viz[y]){                vis[x]=1;                viz[y]=1;                b[ans++]=i+1;            }        }        printf("%d",b[0]);        for(int i=1;i<ans;i++)            printf(" %d",b[i]);        printf("\n");    }    return 0;}


0 0
原创粉丝点击