Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 DWITE Round 2 #4
Index -> Contests
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
A.J




PostPosted: Thu Nov 26, 2009 7:21 pm   Post subject: DWITE Round 2 #4

I noticed that a lot of people implemented Floyd-Warshall for this question.

However, according to me at least, there exists a nicer solution:

c++:

#include<iostream>
using namespace std;
int n, x, y, ans, num[51], conn[51][51];
main()
{
        freopen("DATA4.txt","r",stdin);
        freopen("OUT4.txt","w",stdout);
    for (int t = 0; t < 5; t++)
    {
        cin >> n;
        memset(num, 9999, sizeof(num));
        memset(conn, 0, sizeof(conn));
        num[1] = ans = 0;
        for (int i = 0; i < n; i++)
        {
            cin >> x >> y;
            conn[x][y] = conn[y][x] = 1;
            num[y] <?= num[x] + 1;
        }
        for (int i = 1; i < 50; i++)
            for (int j = i + 1; j < 51; j++)
                if (conn[i][j] && (num[i] == num[j]) && num[i] != 9999)
                    ans++;
        cout << ans << endl;
    }
}


The basic idea is that if 2 points A and B are connected, and if dist[B] < dist[A] + 1, store dist[A] + 1 in dist[B] (where dist[x] contains distance from 1, and dist[1] = 0, and dist[x] = 999999 for all other values of x). O(n^2) as opposed to Floyd-Warshall's O(n^3).

This solution was taken from the team 'Zaiphyr' from Waterloo Collegiate Institute, and all credit goes to Yusong Men (founder of the aforementioned team).
Sponsor
Sponsor
Sponsor
sponsor
yusong




PostPosted: Fri Nov 27, 2009 2:24 pm   Post subject: RE:DWITE Round 2 #4

Nice, Thank You AJ!
Display posts from previous:   
   Index -> Contests
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 2 Posts ]
Jump to:   


Style:  
Search: