求助,CE并且看不懂编译信息
  • 板块学术版
  • 楼主Isprime
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/11/16 21:36
  • 上次更新2023/11/4 00:22:25
查看原帖
求助,CE并且看不懂编译信息
149815
Isprime楼主2021/11/16 21:36
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
inline int read() {
	int res=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();}
	while(ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+ch-'0',ch=getchar();
	return res*f;
}
const int N=1<<21;
const int M=105;
const int inf=1e9+7;
int n,m,ecnt;
int head[N];
struct Bug {
	int t;
	char b[N],f[N];
}s[M];
struct Edge {
	int nxt,to,dis;
}e[N*M];
inline void add(int u,int v,int w){
	e[++ecnt].nxt=head[u];
	e[ecnt].to=v;
	e[ecnt].dis=w;
	head[u]=ecnt;
}
inline int getbit(int x,int p) {return (x>>(n-p))%10;}
inline bool check(int status,int x) {
	for(int i=1;i<=n;++i) 
		if(!((s[x].b[i]=='+'&&getbit(status,i))||(s[x].b[i]=='-'&&!getbit(status,i))||s[x].b[i]=='0'))
				return false;
	return true;
}
inline int f(int status,int x) {
	for(int i=1;i<=n;++i)
		if(s[x].f[i]=='+')
			status=status+(getbit(status,i)<<(n-i));
		else if(s[x].f[i]=='-')
			status=status-(getbit(status,i)<<(n-i));
	return status;
}
struct Node {
	int u,v;
	bool operator <(const Node &x) const {
		return v>x.v;
	}
};
bool vis[N];
int dis[N];
priority_queue <Node> Q;
inline void dij(int s) {
	for(int i=0;i<(1<<n);++i)
		dis[i]=inf;
	dis[s]=0;
	Q.push((Node){s,0});
	while(!Q.empty()) {
		Node t=Q.top(); Q.pop();
		int u=t.u;
		if(vis[u]) continue;
		vis[u]=1;
		for(int i=head[u];i;i=e[i].nxt) {
			int v=e[i].to;
			if(dis[v]>dis[u]+e[i].dis) {
				dis[v]=dis[u]+e[i].dis;
				if(!vis[v]) Q.push((Node){v,dis[v]});
			}
		}
	}
}
signed main() {
	n=read(); m=read();
	for(int i=1;i<=m;++i) {
		s[i].t=read();
		for(int j=1;j<=n;++j)
			s[i].b[j]=getchar();
		getchar();
		for(int j=1;j<=n;++j)
			s[i].f[j]=getchar();
	}
	for(int status=0;status<(1<<n);++status)
		for(int j=1;j<=m;++j)
			if(check(status,j)) 
				add(status,f(status,j),s[j].t);
	dij((1<<n)-1);
	if(dis[0]==inf) puts("0");
	else printf("%d\n",dis[0]);
	return 0;
}

编译信息


/tmp/cckOeRnP.o: in function `main':
P2761.cpp:(.text+0x1b1): relocation truncated to fit: R_X86_64_PC32 against symbol `dis' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text+0x1cc): relocation truncated to fit: R_X86_64_PC32 against symbol `dis' defined in .bss section in /tmp/cckOeRnP.o
/tmp/cckOeRnP.o: in function `__static_initialization_and_destruction_0(int, int)':
P2761.cpp:(.text+0x213): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text+0x226): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
/tmp/cckOeRnP.o: in function `dij(int)':
P2761.cpp:(.text._Z3diji[_Z3diji]+0x4b): relocation truncated to fit: R_X86_64_PC32 against symbol `dis' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0x6c): relocation truncated to fit: R_X86_64_PC32 against symbol `dis' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0x8e): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0x9a): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0xb1): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0xc4): relocation truncated to fit: R_X86_64_PC32 against symbol `Q' defined in .bss section in /tmp/cckOeRnP.o
P2761.cpp:(.text._Z3diji[_Z3diji]+0xdb): 从输出所省略的额外重寻址溢出
collect2: error: ld returned 1 exit status
2021/11/16 21:36
加载中...