클리크 그래프의 최단 경로 합
시간 제한2초메모리 제한512 MB
여러 개의 클리크를 겹쳐 만든 그래프가 주어질 때, 모든 두 정점 사이 최단 경로 길이의 합을 구한다.
문제
정점이 개인 무방향 무가중치 연결 그래프 가 있다. 정점 번호는 0번부터 번까지이다.
의 간선은 배열 와 배열 로 정해진다. 는 정점 번호를 담은 배열이고, 같은 번호가 여러 번 나올 수 있다. 는 를 앞에서부터 잘라 만드는 블록의 길이를 담은 배열이다.
먼저 를 의 앞 개 원소의 합으로 정의한다. 예를 들어 이면 , , , 이다.
인 모든 에 대해 을 만족하는 쌍 를 모두 생각한다. 각 쌍마다 정점 와 정점 를 잇는 간선이 하나 있다. 다시 말해 부터 까지의 정점은 완전 그래프를 이룬다. 이렇게 만들어진 간선 말고 다른 간선은 없다.
, , 가 주어지면 서로 다른 두 정점의 모든 쌍에 대해 최단 경로의 길이를 구하고 그 합을 출력하는 프로그램을 작성하시오. 입력으로 주어지는 그래프는 항상 연결 그래프이다.
입력
첫째 줄에 정점의 수 (), 의 크기 (), 의 크기 ()가 공백으로 구분되어 주어진다.
둘째 줄에 의 원소 개가 순서대로 주어진다. 셋째 줄에 의 원소 개가 순서대로 주어진다.
의 원소는 모두 0 이상 이하이다. 의 원소는 모두 2 이상 이하인 자연수이고, 그 합은 이하이다. 인 모든 에 대해 은 서로 다르다.
출력
서로 다른 두 정점으로 이루어진 모든 쌍의 최단 경로 길이를 더한 값을 첫째 줄에 출력한다. 한 쌍은 한 번만 센다. 이 값은 32비트 정수의 범위를 넘을 수 있다.