记录编号 234972 评测结果 AAAAAAAAAA
题目名称 [SDOI 2012 DAY2]集合 最终得分 100
用户昵称 Gravatarstdafx.h 是否通过 通过
代码语言 C++ 运行时间 1.224 s
提交时间 2016-03-10 06:05:16 内存使用 6.49 MiB
显示代码纯文本
#define maxn 500010ul
#define maxs 10ul
#define inf 0x7fffffff

#include <stdio.h>
#include <algorithm>

struct Edge{int u,v,w;}edge[maxn];
inline bool comp(Edge a,Edge b){return a.w<b.w;}
char b[maxn],op[maxs];
int n,m,q;

inline int in(){
	int x=0,c=getchar();
	while(c<'0'||c>'9') c=getchar();
	for(;c>='0'&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+(c^48);
	return x;
}

inline int Query(char s1,char s2){
	int ans=inf;
	for(int i=1;i<=m;i++){
		if(b[edge[i].u]==s1&&b[edge[i].v]==s2){ans=edge[i].w;break;}
		if(b[edge[i].u]==s2&&b[edge[i].v]==s1){ans=edge[i].w;break;}
	}
	return ans;
}

int main(){
	freopen("seta.in","r",stdin);
	freopen("seta.out","w",stdout);
	n=in(),m=in();
	for(int i=1;i<=n;i++) b[i]='A';
	for(int i=1;i<=m;i++) edge[i].u=in(),edge[i].v=in(),edge[i].w=in();
	std::sort(edge+1,edge+m+1,comp);
	scanf("%d",&q);
	for(int i=1,k;i<=q;i++){
		scanf("%s",op);
		if(op[0]=='A'){
			k=Query(op[3],op[4]);
			if(k==inf) puts("No Found!");
			else printf("%d\n",k);
		}
		else k=in(),b[k]=op[4];
	}
	return 0;
}