那位有时间的人帮我找下bug,我用的spfa
查看原帖
那位有时间的人帮我找下bug,我用的spfa
483058
陈泽涵爱g编程楼主2021/10/14 21:24
#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
int n,m;
const int maxn=156;
vector<int>g[maxn];
vector<int>p[maxn];
int pp=0;
struct node {
	int u,v;
};
bool cmp(node a,node b) {
	if(a.u !=b.u ) {
		return a.u <b.u ;
	} else {
		return a.v <b.v;
	}

};
node a[5000];
bool bfs(int u,int v) {
	int vis[maxn];
	queue<int>q;
	q.push(u);
	vis[u]=1;
	while(!q.empty()) {
		int s=q.front() ;
		q.pop() ;
		vis[s]=1;
		for(int i=0; i<g[s].size(); i++) {
			int f=g[s][i];
            if((s==u&&f==v)||(s==v&&f==u)||vis[f])continue;
			if(f==v) {
				return false;
			}
			vis[f]=1;
			q.push(f);
		}
	}
	if(vis[v])
		return false;
	return true;
}
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1; i<=m; i++) {
		int u,v;
		scanf("%d%d",&u,&v);
		g[u].push_back(v);
		g[v].push_back(u);
		p[u].push_back(v);
	}
	for(int i=1; i<=n; i++) {
		for(int j=0; j<p[i].size(); j++) {
			if(bfs(i,p[i][j])) {
				pp++;
				a[pp].u =i;
				a[pp].v =p[i][j];
			}
		}
	}
	sort(a+1,a+1+pp,cmp);
	for(int i=1; i<=pp; i++) {
		printf("%d%2d\n",a[i].u ,a[i].v );
	}
	return 0;
}
2021/10/14 21:24
加载中...