Bad Paths

View as PDF

Submit solution

Points: 12 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type

I am currently travelling across a tree with xi vertices.

A simple path between two distinct vertices is called good if every edge in the path belongs to the tree. All other simple paths between two distinct vertices are called bad because they contain an edge not found in the tree.

For optimization purposes, I have a plan to create an edge between every pair of vertices, if they are not already directly connected. Since edges are expensive, I will base this decision on the number of distinct bad paths. In other words, how many new paths would be created? Please help me calculate this number modulo 109+7.

Note: A simple path does not visit the same vertex twice. Two simple paths are considered distinct iff there is an edge in one path that is not used in the other path.

Note 2: The exact structure of the tree is irrelevant.

Constraints

For all cases:

1N105

No xi will appear twice in the same test case.

Subtask Points xi
1 20 1xi5
2 30 1xi100
3 50 1xi106

Input Specification

The first line contains the integer N (1N105).

N lines of input follow. The ith line contains xi.

Output Specification

For each xi, output the number of bad paths modulo 109+7.

Sample Input

Copy
2
2
3

Sample Output

Copy
0
3

Comments

There are no comments at the moment.