记录编号 234971 评测结果 AAAAAAAAAA
题目名称 [SDOI 2012 DAY2]集合 最终得分 100
用户昵称 Gravatarzys 是否通过 通过
代码语言 C++ 运行时间 1.690 s
提交时间 2016-03-10 06:05:10 内存使用 16.31 MiB
显示代码纯文本
#define MAXN 100010UL
#define MAXE 1000010UL
#define inf 0x2fffffff
#define BL(x) belong[x]
#define Min(a,b)((a)<(b)?(a):(b))

#include<cstdio>
#include<algorithm>

using namespace std;

char opt[10];int Ans;
int n,m,first[MAXN],tot,belong[MAXN],q;

struct Edge{
    int u,v,w,next;
}edge[MAXE];

bool cmp(const Edge & a,const Edge & b)
{
    return a.w<b.w;
}

inline void Add(int u,int v,int w)
{
    edge[++tot].u=u;
    edge[tot].v=v;
    edge[tot].w=w;
    edge[tot].next=first[u];
    first[u]=tot;
}

inline void vio()
{
    sort(edge+1,edge+tot+1,cmp);
    for(int i=1,x;i<=q;i++){
        scanf("%s",opt);
        if(*opt=='M'){
            scanf("%d",&x);
            BL(x)=opt[4]-'A'+1;
        }
        else{
            Ans=inf;
            for(int j=1;j<=tot;j++)
                if(BL(edge[j].u)==opt[3]-'A'+1)
                    if(BL(edge[j].v)==opt[4]-'A'+1){
                        Ans=edge[j].w;break;
                    }
            if(Ans==inf)printf("No Found!\n");
            else printf("%d\n",Ans);
        }
    }
}

int main()
{
	freopen("seta.in","r",stdin);
	freopen("seta.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1,u,v,w;i<=m;i++){
        scanf("%d%d%d",&u,&v,&w);
        Add(u,v,w);Add(v,u,w);
    }
    for(int i=1;i<=n;i++)BL(i)=1;
    scanf("%d",&q);vio();
}