G - I love Codeforces(思维题)

题目

G - I love Codeforces

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题意:输入n,接下来n行输入n个名字;输入m,接下来m行每行输入u,v,代表u爱上了v。若u爱上v,u就会把名字改成I_love_v,请输出最后第一个人的
名字。
思路:纯模拟会re,mtl等错误,所以只需要记录用一个数组记录I_love_v的次数即可。
AC代码
1

#include <bits/stdc++.h>

using namespace std;
char s[200010][100];
int ans[200010];
//int vis[200010];
int main()
{
    int n,m,a,b;
//    char t[]="I_love_";
    cin>>n;
    for(int i=1; i<=n; i++)
    cin>>s[i];
    cin>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>a>>b;
        strcpy(s[a],s[b]);
        ans[a]=ans[b]+1;
    }
//    for(int i=1; i<=n ;i++)
//    cout<<"!!!"<<ans[i]<<endl;
    for(int i=1; i<=ans[1];i++)
    cout<<"I_love_";
    cout<<s[1]<<endl;
    return 0;
}

2

#include <bits/stdc++.h>

using namespace std;
char s[200010][100];
int ans[200010];
int vis[200010];
int main()
{
    int n,m,a,b;
//    char t[]="I_love_";
    cin>>n;
    for(int i=1; i<=n; i++)
    cin>>s[i];
    cin>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>a>>b;
        strcpy(s[a],s[b]);
        if(vis[b]==0&&vis[a]==0)
        {
            ans[a]++;
            vis[a]=1;
        }
        else if(vis[b]==1&&vis[a]==0)
        {
            ans[a]=ans[b]+1;
            vis[a]=1;
        }
        else if(vis[b]==0&&vis[a]==1)
        {
            ans[a]=1;
            vis[b]=1;
        }
        else if(vis[b]==1&&vis[a]==1)
        {
            ans[a]=ans[b]+1;
        }
//        cout<<ans[a]<<"!!!!!!!!!!"<<endl;

    }
//    for(int i=1; i<=n ;i++)
//    cout<<"!!!"<<ans[i]<<endl;
    for(int i=1; i<=ans[1];i++)
    cout<<"I_love_";
    cout<<s[1]<<endl;
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值