萌新求助,迷惑错误
查看原帖
萌新求助,迷惑错误
273501
_CY_楼主2022/3/14 11:30

为什么将scanf改成快读就过了

错误代码

#include <cstdio>
#include <vector>
#include <iostream>
#define ll long long
using namespace std;

inline ll read(){
    ll x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-') f=-f;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    return x*f;
}

vector<pair<int, ll>> mp[500010];

int n, m;
ll f[500010];

void dfs(int u, int fa, ll sum) {
	f[u] = sum;
	for(int i = 0; i < mp[u].size(); i++) {
		int v = mp[u][i].first;
		ll w = mp[u][i].second;
		if(v == fa) continue;
		dfs(v, u, sum ^ w);
	}
}

int main() {
	ll u, v, w;
	scanf("%d%d", &n, &m);
	for(int i = 1; i < n; i++) {
		scanf("%lld%lld%lld", &u, &v, &w);
		mp[u].push_back(make_pair(v, w));
		mp[v].push_back(make_pair(u, w));
	}
	dfs(1, 1, 0);
	for(int i = 1; i <= m; i++) {
		scanf("%lld%lld%lld", &u, &v, &w);
		if((f[u] ^ f[v]) == w) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

正确代码

#include <cstdio>
#include <vector>
#include <iostream>
#define ll long long
using namespace std;

inline ll read(){
    ll x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-') f=-f;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    return x*f;
}

vector<pair<int, ll>> mp[500010];

int n, m;
ll f[500010];

void dfs(int u, int fa, ll sum) {
	f[u] = sum;
	for(int i = 0; i < mp[u].size(); i++) {
		int v = mp[u][i].first;
		ll w = mp[u][i].second;
		if(v == fa) continue;
		dfs(v, u, sum ^ w);
	}
}

int main() {
	ll u, v, w;
	scanf("%d%d", &n, &m);
	for(int i = 1; i < n; i++) {
		u = read(); v = read(); w = read();
		mp[u].push_back(make_pair(v, w));
		mp[v].push_back(make_pair(u, w));
	}
	dfs(1, 1, 0);
	for(int i = 1; i <= m; i++) {
		u = read(); v = read(); w = read();
		if((f[u] ^ f[v]) == w) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
2022/3/14 11:30
加载中...