编译错误
  • 板块学术版
  • 楼主Istruggle
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/8/14 16:14
  • 上次更新2023/11/3 03:52:30
查看原帖
编译错误
873417
Istruggle楼主2023/8/14 16:14

自己在本地可以编译,在我们学校的oj上不能,这是为什么

#include<bits/stdc++.h>
using namespace std;
int cnt=0,head[10005],n,m,k,ans=10000000,g[10005][10005];
int is_del[10005][10005];
struct edge
{
	int v,w,next;
}e[10005];
void addedge(int u,int v,int w)
{
	e[++cnt].v=v;
	e[cnt].w=w;
	e[cnt].next=head[u];
	head[u]=cnt;
}
struct node
{
	int u,d;
	operator<(const node& a) const{
		return d>a.d;
	}
}; 
int dijskral()
{
	int dis[1005],vis[1005];
	memset(vis,0,sizeof(vis));
	for(int i = 1;i<=n;i++) dis[i]=0x3f3f3f3f;
	dis[1]=0;
	priority_queue<node> q;
	q.push((node){1,0});
	while(!q.empty())
	{
		node f=q.top(); q.pop();
		int u=f.u,d=f.d;
		if(vis[u]==1) continue;
		vis[u]=1;
		for(int i = head[u];i;i=e[i].next){
			int y=e[i].v;
			if(dis[y]>dis[u]+e[i].w){
				dis[y]=dis[u]+e[i].w;
				if(vis[y]==0)
				{
					q.push((node){y,dis[y]});
				}
			}
		}
	}
	return dis[n];
}
void dfs(int x)
{
	if(x==k)
	{
		int tmp=dijskral();
		ans=min(ans,tmp);
		return;
	}
	for(int h = 1;h<=n;h++)
	{
		for(int i = head[h];i;i=e[i].next)
     	{
	    	int v=e[i].v;
	    	if(is_del[h][v]==0)
	    	{
		    	is_del[h][v]=1;
			    e[i].w=0;
		    	for(int j = head[v];j;j=e[j].next){
			     	if(e[j].v==h)
			    	{
					    e[j].w=0;
					    break;
			    	}
	     		}
		    	dfs(x+1);
	    		e[i].w=g[h][v];
		      	for(int j = head[v];j;j=e[j].next)
				{
			     	if(e[j].v==h)
			     	{
			   	    	e[j].w=g[v][h];
			        	break;
			     	}
		     	}
	    	}
     	}
	}
	
}
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	for(int i = 1;i<=m;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		addedge(a,b,c);
		addedge(b,a,c);
		g[a][b]=g[b][a]=c;
	}
	dfs(0);
	cout<<ans;
	return 0;
}

2023/8/14 16:14
加载中...