# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
91395 | YottaByte | 관광지 (IZhO14_shymbulak) | C++14 | 4 ms | 2756 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <string.h>
#include <iomanip>
using namespace std;
const int N = 501;
#define pb emplace_back
#define fr first
#define sc second
#define mk make_pair
int g1[N][N], g[N][N];
int n, d[N][N];
void floyd()
{
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
for(int k = 1; k <= n; k++)
{
if(g[i][j] == g[i][k] + g[k][j] && k != j && i != k && i != j)
{
g1[i][j] += g1[i][k] * g1[k][j];
}
if(g[i][j] > g[i][k] + g[k][j] && k != j && i != k && i != j){
g1[i][j] = g1[i][k] * g1[k][j];
g[i][j] = g[i][k] + g[k][j];
}
}
}
main()
{
memset(g, 0x3f3f3f3f, sizeof(g));
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
g[a][b] = 1;
g[b][a] = 1;
g1[a][b] = 1;
g1[b][a] = 1;
}
floyd();
int mx = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(i != j)
mx = (mx < g[i][j]) ? g[i][j] : mx;
int ans = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(g[i][j] == mx)
{
ans += g1[i][j];
}
}
//for(int i = 1; i <= n; i++)
//for(int j = 1; j <= n; j++)
//if(j == n)printf("%d\n", g[i][j]);
//else printf("%d ", g[i][j]);
printf("%d\n", ans / 2);
}
/**
6
1 2
1 3
2 4
4 3
4 5
4 6
5
1 2
2 3
3 4
4 5
5 1
6
1 2
2 3
3 4
4 5
5 1
1 4
4
1 2
1 3
1 4
4 3
**/
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |