POJ 3360 Cow Contest

H - Cow Contest POJ - 3660

感觉鹏哥出的题对我不太友善,水一会别的最短路,看到这道题懵逼好一会没想到和最短路有什么关系,然后敲出来自己认为正确的代码(实际wa):

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<cmath>
using namespace std;
#define inf 0x3f3f3f3f
bool vis[105][105];
int main()
{
    int m, n;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(vis, 0, sizeof(vis));
        for(int i = 0; i < m; i ++)
        {
            int a, b;
            scanf("%d%d",&a, &b);
            vis[a][b] = vis[b][a] = 1;
        }
        int ans;
        //int cnt = 0;
        for(int i = 1; i <=n; i ++)
        {
            int sum = 1;
            for(int j = 1; j <= n; j ++)
            {
                if(i == j)continue;
                if(vis[i][j])
                {
                    sum ++;
                    vis[i][j] = vis[j][i] = 0;
                }
            }
            if(sum == n - 1) ans ++;
        }
        printf("%d\n",ans);
    }
    return 0;
}

然后就很难受了,想不出思路,百度了一下,哎,晚上做题脑子就是不好用,我这样做只是确定了相邻牛的关系,

1 > 2, 2 > 3只能确定2和1,3的关系,其实1,3关系也就确定了,而用Floyd跑一遍循环就能确立联系了,刷新了对该算法的认识,(如果是并查集应该也可以做出来)

正确代码:

#include<cstdio>  
#include<cstring>  
#include<iostream>  
using namespace std;  
const int maxn=102;  
int map[maxn][maxn],n,m;  
int main()  
{  
    while(scanf("%d%d",&n,&m)!=EOF)  
    {  
    memset(map,0,sizeof(map));  
    for(int i=0;i<m;i++)  
    {  
        int a,b;  
        scanf("%d%d",&a,&b);  
        map[a][b]=1;  
    }  
    for(int k=1;k<=n;k++)  
        for(int i=1;i<=n;i++)  
        for(int j=1;j<=n;j++)  
            if(map[i][k]&&map[k][j])  
            map[i][j]=1;  
    int ans=0;  
    for(int i=1;i<=n;i++)  
    {  
        int res=n-1;  
        for(int j=1;j<=n;j++)  
        if(map[i][j]||map[j][i])  
            res--;  
        if(!res)  
        ans++;  
    }  
    printf("%d\n",ans);  
    }  
    return 0;  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为一名程序员,我在2023对自己的计划包括: 1. 不断学习和提升技能:我会继续学习新的编程语言和框架,以及不断提高编码能力。 2. 参加行业相关的培训和会议:我会参加各种行业相关的培训课程和会议,以便获得最新的行业知识和技能。 3. 参加项目并积累经验:我会参加各种项目,以便积累丰富的经验,并提升个人能力。 4. 在业内建立良好的人脉关系:我会努力与业内的同行建立良好的人脉关系,并与他们保持联系。 5. 寻找更好的发展机会:我会不断寻找更好的发展机会,以便在职业生涯中取得更大的成功。 总之,我在2023会努力工作,不断学习和提升,并寻找更好的发展机会,以在职业生涯中取得更大的成功。 ### 回答2: 2023的计划对于我作为一名程序员来说十分重要,我希望能够提升自己的技能水平并取得更好的职业发展。以下是我的计划: 首先,我计划继续学习并掌握新的编程语言和技术。随着科技的不断发展,编程语言和技术也在不断更新换代,作为一名程序员,保持学习的状态是必不可少的。我将花费更多的时间学习目前主流的编程语言,如Python、Java等,并尝试掌握最新的前端和后端技术。通过不断学习,我希望能够拥有更广泛的技术视野和更强大的技术能力。 其次,我计划参与更多的项目和实践。在理论学习之外,实践是提升技能的关键。我计划积极寻找项目机会,无论是个人项目还是团队项目,都可以提供宝贵的实践机会。通过参与各种项目,我可以锻炼解决问题的能力,提高编码和协作能力。同时,我也希望通过实践中的挑战和失败,不断完善自己,进一步提高自己的技术水平和经验。 第三,我计划参加相关的培训和技术交流活动。参加培训和技术交流活动可以与其他程序员交流和学习,了解行业最新动态和趋势。我计划参加各种技术研讨会、讲座和培训班,通过与行业专家和其他程序员的交流,深入了解各种编程技术和最佳实践。同时,我也希望能够积极参与技术社区,与其他程序员分享自己的经验和见解,不断提高自己的影响力和口碑。 最后,我计划在个人项目和开源社区上做出更多的贡献。通过自己的努力,我希望能够在个人项目中实现一些有意义的功能或解决一些实际问题,并将其开源。通过开源社区的贡献,我可以帮助他人解决问题,同时也能够借助其他人的反馈和指导,不断改进自己的代码和设计能力。 总之,2023对于我作为一名程序员来说是充满挑战和机遇的一。我将不懈努力,持续学习和实践,不断提升自己的技能水平和职业发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值