#1708. 「THUPC 2019」找树 / findtree
「THUPC 2019」找树 / findtree
题目描述
定义 分别为按位与、按位或、按位异或运算。记 表示 的从低位到高位的第 个二进制位。定义一个作用在 位二进制数上的新运算 ,满足对于结果 的每一位 有 。不难验证 运算满足结合律和交换律。
给出一张 个点 条边的无向图,每一条边的权值是一个 位二进制数(即小于 的非负整数)。请你找一棵原图的生成树。设你找出的生成树中的边边权分别为 ,请你最大化 。
输入格式
第一行两个正整数 ;
第二行一个长度为 的串,串中的每个字符为 &
、|
、^
中的一个(分别代表与、或和异或),表示每一个 。
接下来 行,每一行三个非负整数 ,表示一条连接 和 权值为 的边,保证 ,。
对于所有数据,。
输出格式
输出一行一个数,表示答案。如果图不连通,输出 -1
。
样例
3 3
^
1 2 1
2 3 1
1 3 0
1
数据范围与提示
来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2019。
题解等资源可在 https://github.com/wangyurzee7/THUPC2019 查看。