View Code of Problem 3818

#include<stdio.h>
#include<string.h>
#include<math.h>
/*本题要特别注意的是移动的距离可能大于数组的长度,因此需要取余数*/ 

int main()
{
	int m,n,k;
	scanf("%d%d%d",&n,&m,&k);
	int str[n+1][n+1]; 
	for(int i=1;i<n+1;i++)
	{
		for(int j=1;j<n+1;j++)
		{
			str[i][j]=99999;
		}
	}
	for(int i=0;i<m;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		if(c<str[a][b])
		{
			str[a][b]=c;
		}
	}

	int flag[1000]={0};
	for(int i=0;i<k;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		if(i!=k)
		{	
		if(str[x][y]!=99999)
		{
			printf("%d\n",str[x][y]);
		}
			else
			{	int dis=0;
				for(int i=x;i<y;i++)
				{
					dis+=str[i][i+1];
				}
				printf("%d\n",dis);
			}		
		}
		else
		{
			if(str[x][y]!=99999)
		{
			printf("%d",str[x][y]);
		}
			else
			{	int dis=0;
				for(int i=x;i<y;i++)
				{
					dis+=str[i][i+1];
				}
				printf("%d",dis);
			}	
		}
		
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3818