求助大佬们TLE两个点
查看原帖
求助大佬们TLE两个点
1219653
__AFO__楼主2024/4/6 11:49

暴力代码如何修改

help!

#include<bits/stdc++.h>
using namespace std;
long long m,n,k[2000010],h;
struct nn {
	long long x,y;
} a[2000010];
struct kn {
	long long a,b,c,d;
} b[2000010];
int main() {
	scanf("%lld%lld",&n,&m);
	a[1].x=0;
	a[1].y=0;
	k[1]=1;
	for(long long i=1; i<=m; i++) {
		scanf("%lld%lld%lld%lld",&b[i].a,&b[i].b,&b[i].c,&b[i].d);
		if(k[b[i].a]==1) {
			a[b[i].b].x=a[b[i].a].x+b[i].c;
			a[b[i].b].y=a[b[i].a].y+b[i].d;
			k[b[i].b]=1;
		}
		if(k[b[i].b]==1) {
			a[b[i].a].x=a[b[i].b].x-b[i].c;
			a[b[i].a].y=a[b[i].b].y-b[i].d;
			k[b[i].a]=1;
		}
	}
	while(1) {
		h=0;
		for(long long i=1; i<=m; i++) {
			if(k[b[i].a]==1&&k[b[i].b]==0) {
				a[b[i].b].x=a[b[i].a].x+b[i].c;
				a[b[i].b].y=a[b[i].a].y+b[i].d;
				k[b[i].b]=1;
				h++;
			}
			if(k[b[i].b]==1&&k[b[i].a]==0) {
				a[b[i].a].x=a[b[i].b].x-b[i].c;
				a[b[i].a].y=a[b[i].b].y-b[i].d;
				k[b[i].a]=1;
				h++;
			}
		}
	    if(h==0) break;
	}
	for(long long i=1;i<=n;i++){
		if(k[i]==0) printf("undecidable\n");
		else printf("%lld %lld\n",a[i].x,a[i].y);
	}
	return 0;
}
2024/4/6 11:49
加载中...