NC222737. 呜米喵想要成为爱抖露!
描述
输入描述
第一行三个整数 n m k
以下m行每行三个整数 A B C![]()
输出描述
如果第一种方法可以解锁账号 请输出:wmmxycwdjdwdlnljbzwtskirakira本来应该输出这个但是qcjj说中文会炸(呜米喵想要成为大家的爱抖露 努力进步在舞台上kirakira)如果需要第二种方法解锁账号 请输出:wmmxycwdjdwdlnljbzwtsfljt本来应该输出这个但是qcjj说中文会炸(呜米喵想要成为大家的爱抖露 努力进步在舞台上翻垃圾桶)
示例1
输入:
5 2 8 2 2 38 4 5 16
输出:
wmmxycwdjdwdlnljbzwtsfljt
说明:
这组样例有彩蛋.jpg示例2
输入:
5 6 30 1 2 10 4 5 9 2 3 5 3 1 11 3 4 7 3 5 20
输出:
wmmxycwdjdwdlnljbzwtskirakira
C++ 解法, 执行用时: 421ms, 内存消耗: 46684K, 提交时间: 2021-07-12 13:46:42
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; const int M=1e7+10; struct ppp{ int a,b,c; }d[N]; int n,m,kk,f[N],k[M]; bool cmp(ppp q,ppp p){ return q.c<p.c; } int find(int x){ return x==f[x]?x:f[x]=find(f[x]); } int main(){ cin>>n>>m>>kk; k[1]=0; for(int i=2;i<=M;i++){ if(k[i])continue; for(int j=1;j*i<=M;j++){ k[i*j]=i; } } for(int i=1;i<=m;i++){ scanf("%d %d %d",&d[i].a,&d[i].b,&d[i].c); if(k[d[i].c]==d[i].c)d[i].c=0; } sort(d+1,d+1+m,cmp); for(int i=1;i<=n;i++){ f[i]=i; } int s=0; long long int ans=0; for(int i=1;i<=m;i++){ int x=find(d[i].a),y=find(d[i].b); if(x==y)continue; f[x]=y; s++; ans+=d[i].c; if(s==n-1)break; } if(ans<kk&&s==n-1)printf("wmmxycwdjdwdlnljbzwtskirakira\n"); else printf("wmmxycwdjdwdlnljbzwtsfljt\n"); }