데이터 구조 실험의 도 론 7: 당나귀 친구 계획
Time Limit: 1000MS Memory limit: 65536K
제목 설명
베테랑 당나귀 친구 로 서 샤 오 신 은 소 중 히 간직 하고 있 는 자가 운전 노선 도 를 가지 고 있 습 니 다. 그림 에는 전국 각 도시 간 의 고속도로 거리 와 도로 요금 상황 이 상세 하 게 표시 되 어 있 습 니 다. 지금 은 프로그램 을 만들어 목적지 에서 목적지 까지 의 가장 짧 은 경 로 를 찾 아 보 세 요. 여러 경로 가 가장 짧 으 면 통행 료 가 가장 적은 경 로 를 출력 하 세 요.
입력
연속 T 조 데이터 입력, 각 조 가 입력 한 데이터 의 첫 줄 은 네 개의 정수 N, M, s, d 를 제시 합 니 다. 그 중에서 N (2 < = N < = 500) 은 도시 수량 이 고 도시 번 호 는 0 ~ N - 1 이 며 M 은 도시 간 고속도로 의 수량 입 니 다. s 는 출발지 의 도시 번호 이 고 d 는 목적지 의 도시 번호 입 니 다.그 다음 에 M 행 은 각 줄 에 고속도로 정 보 를 제공 하여 도시 1, 도시 2, 고속도로 길이, 요금 액 을 나타 내 고 중간 에 빈 칸 으로 간격 을 두 며 숫자 는 모두 정수 이 고 500 을 초과 하지 않 으 며 입력 데 이 터 는 모두 해 제 될 것 을 보증한다.
출력
같은 줄 에서 출력 경로 의 길이 와 비용 총액, 데이터 간 에 빈 칸 으로 간격 을 둡 니 다.
예제 입력
1
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20
예제 출력
3 40
제시 하 다.
근원
xam
예제 프로그램
#include
#include
#include
#define N 1000
#define INF 0x3f3f3f3f
typedef struct
{
int len;
int dol;
}node;
node mp[N][N];
void floyd(int n)
{
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
for(int k = 0;k < n;k++)
{
if(mp[j][k].len > mp[j][i].len + mp[i][k].len)
{
mp[j][k].len = mp[j][i].len + mp[i][k].len;
mp[j][k].dol = mp[j][i].dol + mp[i][k].dol;
}
else if(mp[j][k].len == mp[j][i].len + mp[i][k].len)
{
if(mp[j][k].dol > mp[j][i].dol + mp[i][k].dol)
{
mp[j][k].dol = mp[j][i].dol + mp[i][k].dol;
}
}
}
}
}
}
int main()
{
int t,n,m,s,d;
int u,v,w,q;
scanf("%d",&t);
while(t--)
{
scanf("%d %d %d %d",&n,&m,&s,&d);
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
if(i != j)
{
mp[i][j].len = mp[i][j].dol = INF;
}
else
mp[i][j].len = mp[i][j].dol = 0;
}
}
for(int i = 0;i < m;i++)
{
scanf("%d %d %d %d",&u,&v,&w,&q);
if(mp[u][v].len > w)
{
mp[u][v].len = w;
mp[v][u].len = w;
mp[u][v].dol = q;
mp[v][u].dol = q;
}
}
floyd(n);
printf("%d %d
",mp[s][d].len,mp[s][d].dol);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.