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;
}



发布了90 篇原创文章 · 获赞 18 · 访问量 3350

猜你喜欢

转载自blog.csdn.net/sherry_zhen/article/details/103967853
今日推荐