数据有误
查看原帖
数据有误
982513
EternalHeart1314楼主2024/2/24 21:16

正确代码:

#include<bits/stdc++.h>
using namespace std;

const int N(3e5 + 7);
int t, n, m, k, u, v, z, cnt, d[N], ans[N];
vector<pair<int, int> > e[N];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> t;
	while(t --) {
		cin >> n >> m >> k;
		for(int i = 1; i <= n; ++ i) {
			e[i].clear();
		}
		cnt = 0;
		bool flag = false;
		memset(d, -1, sizeof d);
		for(int i = 1; i <= m; ++ i) {
			cin >> u >> v;
			ans[i] = 2;
			e[u].push_back({v, i});
		}
		d[1] = 0;
		queue<int> q;
		q.push(1);
		while(q.size()) {
			u = q.front();
			q.pop();
			for(auto i : e[u]) {
				v = i.first, z = i.second;
				if(~d[v]) {
					if(d[v] == d[u] + 1) {
						flag = true;
					}
					continue;
				}
				d[v] = d[u] + 1;
				ans[z] = 1;
				q.push(v);
			}
		}
		if(k == 1 && flag) {
			cout << "No\n";
			continue;
		}
		cout << "Yes\n";
		for(int i = 1; i <= m; ++ i) {
			cout << ans[i] << ' ';
		}
		cout << '\n';
	}
	return 0;
}

错误代码:

using namespace std;

const int N(3e5 + 7);
int t, n, m, k, u, v, z, cnt, d[N], ans[N];
vector<pair<int, int> > e[N];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> t;
	while(t --) {
		cin >> n >> m >> k;
		for(int i = 1; i <= n; ++ i) {
			e[i].clear();
		}
		cnt = 0;
		bool flag = false;
		memset(d, -1, sizeof d);
		for(int i = 1; i <= m; ++ i) {
			cin >> u >> v;
			ans[i] = 2;
			e[u].push_back({v, i});
		}
		d[1] = 0;
		queue<int> q;
		q.push(1);
		while(q.size()) {
			u = q.front();
			q.pop();
			for(auto i : e[u]) {
				v = i.first, z = i.second;
				if(~d[v]) {
					if(d[v] == d[u] + 1) {
						flag = true;
					}
					continue;
				}
				d[v] = d[u] + 1;
				ans[z] = 1;
				q.push(v);
			}
		}
		if(k == 1 && flag) {
			cout << "No\n";
			continue;
		}
		cout << "Yes\n";
		for(int i = 1; i <= m; ++ i) {
			if(k == 1 && ans[i] == 2) {
				return -1;
			}
			cout << ans[i] << ' ';
		}
		cout << '\n';
	}
	return 0;
}

调了我老久……

2024/2/24 21:16
加载中...